从使用strftime创建的文件名中删除日期时间

时间:2014-11-22 17:05:55

标签: python regex datetime

我的文件名是文件名,如:

"001_-_h_-_hydrogen.2014-09-13.14-27-45.jpg"

我想从文件名中删除使用strftime创建的日期时间并获取:

"001_-_h_-_hydrogen.jpg"

该功能如下:

def remove_datetime(str): 

    return str_withoutdatetime

我对Regexes真的很陌生。我怎么能用Python做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以使用

形式的正则表达式
(\.\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)

的目的相同
>>> re.sub(r'.\d{4}(-\d{2}){2}\.\d{2}(-\d{2}){2}(?=.jpg)', '', str)
'001_-_h_-_hydrogen.jpg'

答案 1 :(得分:0)

>>> 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