Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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
Python 如何从datetime字符串中提取日期值,并根据测试文件中的特定字段转换为日期格式_Python_Python 3.x_Datetime Format - Fatal编程技术网

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”