Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 确保文件名的日期时间格式正确_Regex_Datetime_Python 2.7 - Fatal编程技术网

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个数字以结束字符串。”