Regex 确保文件名的日期时间格式正确
我希望我的所有文件都不符合格式:Regex 确保文件名的日期时间格式正确,regex,datetime,python-2.7,Regex,Datetime,Python 2.7,我希望我的所有文件都不符合格式:2013-03-31_142436.jpg i、 e.%Y-%m-%d\uh%m%S 我有一个脚本重命名的方式,但想检查如果文件名的格式第一。我有: for filename in files: # check filename not already in file format filename_without_ext = os.path.splitext(filename)[0]; 如何检查filename\u而不使用
2013-03-31_142436.jpg
i、 e.%Y-%m-%d\uh%m%S
我有一个脚本重命名的方式,但想检查如果文件名的格式第一。我有:
for filename in files:
# check filename not already in file format
filename_without_ext = os.path.splitext(filename)[0];
如何检查filename\u而不使用
的格式是%Y-%m-%d\uh%m%S
使用re
:
import re
if re.match(r'\d{4}-\d{2}-\d{2}_\d{6}$', filename_without_ext):
pass # of the right format
这将只是检查它是否有可能成为有效日期。如果您需要有效日期,请使用Martijn的答案。使用re
:
import re
if re.match(r'\d{4}-\d{2}-\d{2}_\d{6}$', filename_without_ext):
pass # of the right format
这将只是检查它是否有可能成为有效日期。如果您要求它是一个有效日期,请使用Martijn的答案。只需尝试将其解析为时间戳:
from time import strptime
try:
strptime(filename_without_ext, '%Y-%m-%d_%H%M%S')
except ValueError:
# Not a valid timestamp
strtime()
测试的优点是,它可以保证您拥有一个有效的日期时间值,而不仅仅是一个仍然可以表示无效日期时间的数字模式('1234-56-78987654'
不是一个有效的时间戳)。只要试着将它作为时间戳进行分析:
from time import strptime
try:
strptime(filename_without_ext, '%Y-%m-%d_%H%M%S')
except ValueError:
# Not a valid timestamp
strtime()
测试的优点是,它保证您有一个有效的日期时间值,而不仅仅是一个仍然可以表示无效日期时间的数字模式('1234-56-78987654'
不是一个有效的时间戳)。\d
匹配数字、{4}
、{2}
和{6}
是量词;精确匹配这么多的数字。它只显示“检查字符串的开头有四个数字,后跟连字符,后跟两个数字,后跟一个连字符,后跟两个数字,后跟一个下划线,后跟6个数字以结束字符串\d
匹配数字,{4}
,{2}
和{6}”
是量词;精确匹配多个数字。它只显示“检查字符串开头有四个数字,后跟一个连字符,后跟两个数字,后跟一个连字符,后跟两个数字,后跟一个下划线,后跟6个数字以结束字符串。”