Python 如何从datetime字符串中提取日期值,并根据测试文件中的特定字段转换为日期格式
我在文件中的输入包含以下文本:Python 如何从datetime字符串中提取日期值,并根据测试文件中的特定字段转换为日期格式,python,python-3.x,datetime-format,Python,Python 3.x,Datetime Format,我在文件中的输入包含以下文本: "Tested on: wed Mar 31 09::34:00 CST 2021 " 查看此位文本“测试日期:”后的日期字段,并将其转换为“dd/mm/yyyy”格式的日期值,例如2021年3月31日 在正则表达式下面使用,但执行时出错: import re import os import dateparser basepath = (r"C:\Users\xyz\test") with os.scandir(b
"Tested on: wed Mar 31 09::34:00 CST 2021 "
查看此位文本“测试日期:”后的日期字段,并将其转换为“dd/mm/yyyy”格式的日期值,例如2021年3月31日
在正则表达式下面使用,但执行时出错:
import re
import os
import dateparser
basepath = (r"C:\Users\xyz\test")
with os.scandir(basepath) as entries:
for entry in entries:
if entry.is_file():
fn = entry.name
def f(fn):
with open(fn) as f:
for s in f:
m = re.search(r'Tested on: \S+ (\S+) (\d+) \d+::\d+:\d+ AET (\d+)', s)
subst = "\\2 \\1 \\3"
result = re.sub(m, subst, s, 0, re.MULTILINE)
if result:
#Using strptime
dt = dataetime.strptime(result.group(1), '%B %d %Y')
dt_out = dt.strftime('%d/%m/%Y')
return (fn, dt_out)
else:
return None
if __name__=="__main__":
folder = (r"C:\Users\xyz\test/")
_, _, filenames = next(os.walk(basepath))
dates = []
#dateparser.parse(dates = [])
for i in filenames:
print(f(folder + i), dates)
上面的代码返回attributeerror-“str”对象没有属性“group”
。
正则表达式在这里不起作用。似乎,需要将每个月映射到各自的数字中,如3月-->3日。
re.sub
返回一个字符串,这就是为什么不能在其上使用.group()
通常,result
应该返回您想要的字符串,这样您就可以删除.group(1)
并根据结果相应地更改格式字符串
因此,如果我只使用下面的结果,那么该行将是
dt=datetime.strtime(结果,'%d%b%Y')
,它将抛出valueError。dt=dataetime.strtime(结果,'%B%d%Y')dt_out=dt.strftime('%d/%m/%Y')返回(fn,dt_out)值错误:时间数据'测试时间:Wd Mr 31 09:54:41 CST 2021\n'与给定subst变量的格式'%B%d%Y'不匹配,您的结果将是“2021年3月31日”,因此您应该将格式字符串更改为“%d%b%Y”。这是您错误标记python请求的第二个问题。当您将鼠标悬停在标记上时,会出现一个带有使用指南的小框。请在应用标签之前阅读这些内容。[]的一个明确表示:“仅用于PYTHON请求库。请求是一个功能齐全的PYTHON HTTP库,具有易于使用的逻辑API”