【问题标题】:How to make a datetime object of the date in a filename?如何在文件名中创建日期的日期时间对象?
【发布时间】:2021-11-16 19:29:18
【问题描述】:

我正在尝试提取文件名中的日期时间并将其设置为这样的日期时间格式:2021-10-24 19:37:11

这是我的代码:

import re
import datetime

my_string = 'Afo_20211024-19u37m11s_ab.txt'
date_time= re.search("_(.\d+)_ab.txt", file_name).group(1)
"create a datetime here..."

这是我的输出:

“NoneType”对象没有属性“组”

【问题讨论】:

  • 日期/时间部分20211024-19u37m11s 不只包含数字;您必须使正则表达式更具体
  • 我应该添加什么?
  • 如果您不确定除了日期/时间部分之外的文件名字符串的外观,特定的正则表达式将是'[0-9]{8}-[0-9]{2}u[0-9]{2}m[0-9]{2}s'。如果有的话,只需做一个 re.search 并解析匹配项。

标签: python datetime regex-group


【解决方案1】:

我会这样做。您可以在此处找到与 datetime.strptime 一起使用的代码:strftime() and strptime() Format Codes。

strptime 的第二个参数是我们匹配的模式。每个 %X 代表日期时间的一部分,但我们也可以使用填充符,例如 '-' 和 'u'、'm'、's' 作为模式的一部分。

import datetime
time_string = 'Afo_20211024-19u37m11s_ab.txt'.split('_')[1]
date = datetime.strptime(time_string,'%Y%m%d-%Hu%Mm%Ss')

如果文件总是以相同的内容开始和结束,并且只有日期时间部分不同,那么您甚至可以去掉第 2 行,只在日期时间模式中包含所有开始和结束填充符。

【讨论】:

  • 效果很好!为了让它更健壮,我做了这个:datetime= datetime.datetime.strptime(file_name.split('_')[1],'%Y%m%d-%Hu%Mm%Ss')
猜你喜欢
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-19
  • 2011-05-11
相关资源
最近更新 更多