创造我所拥有的文件,文件名如:删除日期时间由strftime
"001_-_h_-_hydrogen.2014-09-13.14-27-45.jpg"
我想从文件名中删除与strftime
创建的日期时间,并得到:
"001_-_h_-_hydrogen.jpg"
功能看起来像:
def remove_datetime(str):
return str_withoutdatetime
我真的很新的正则表达式。我怎么能在Python中做到这一点?
创造我所拥有的文件,文件名如:删除日期时间由strftime
"001_-_h_-_hydrogen.2014-09-13.14-27-45.jpg"
我想从文件名中删除与strftime
创建的日期时间,并得到:
"001_-_h_-_hydrogen.jpg"
功能看起来像:
def remove_datetime(str):
return str_withoutdatetime
我真的很新的正则表达式。我怎么能在Python中做到这一点?
可以使用形式的正则表达式
(\.\d{2,4}(-\d{2}){2}){2}
用法示例
>>> str="001_-_h_-_hydrogen.2014-09-13.14-27-45.jpg"
>>> re.sub(r'(\.\d{2,4}(-\d{2}){2}){2}', '', str)
'001_-_h_-_hydrogen.jpg'
OR
更具体
>>> re.sub(r'(\.\d{2,4}(-\d{2}){2}){2}(?=.jpg)', '', str)
'001_-_h_-_hydrogen.jpg'
它所呢?
\.
匹配的.
这里后最低hydrogen
\d{2,4}
比赛2(用于小时),最多4个(对年)数字点匹配
(-\d{2})
匹配位2时间即月份和分钟
{2}
量化二次,即再它无二的匹配项的日期/或第二
{2}
再次量化匹配整个TIEM
(?=.jpg)
检查是否匹配的字符串之后是.jpg
你也可以写一个不太神秘的其他长正则表达式,如
\.\d{4}(-\d{2}){2}\.\d{2}(-\d{2}){2}(?=.jpg)
wh ICH会做同样的目的,
>>> re.sub(r'.\d{4}(-\d{2}){2}\.\d{2}(-\d{2}){2}(?=.jpg)', '', str)
'001_-_h_-_hydrogen.jpg'
这是很花哨...这是有道理的,但是由于OP对于重新使用“真的很新”,也许你可以分解你为他/她重复使用重复元素的方式 – beroe 2014-11-22 17:35:23
@beroe我添加了一个解释和直接的方法。希望它现在更有意义:) – nu11p01n73R 2014-11-22 17:45:52
>>> x="001_-_h_-_hydrogen.2014-09-13.14-27-45.jpg"
>>> xnew= re.sub(r'\.\d{4}-\d{2}-\d{2}\.\d{2}-\d{2}-\d{2}', '', x)
>>> xnew
'001_-_h_-_hydrogen.jpg'
参见:Python re
对不起,我没有正确地表达自己。我的意思是从文件名字符串中删除日期时间 – cyberjoac 2014-11-22 17:13:59
从所有的名字,这是一个例子。格式虽然是“filename.Y-M-D.HH-MM-SS.jpg” – cyberjoac 2014-11-22 17:17:59
考虑到字符串总是相同的格式,你可能可以这样做:'lst = mystr.split('。'); mystr = lst [0] +'。' + lst [-1]'。这比Regex更有效率。 – iCodez 2014-11-22 17:37:37