Python 如何使parsedatetime忽略日期后的冒号?

Python 如何使parsedatetime忽略日期后的冒号?,python,datetime,Python,Datetime,我正在从日志文件中读取日期字符串,并使用parsedatetime将其转换为日期: c = parsedatetime.Calendar() d = c.parse("29/May/2019:00:00:00 +0000") 给 (time.struct_time(tm_year=2019, tm_mon=5, tm_mday=29, tm_hour=17, tm_min=12, tm_sec=45, tm_wday=2, tm_yday=149, tm_isdst=1), 0) (time

我正在从日志文件中读取日期字符串,并使用
parsedatetime
将其转换为日期:

c = parsedatetime.Calendar()
d = c.parse("29/May/2019:00:00:00 +0000")

(time.struct_time(tm_year=2019, tm_mon=5, tm_mday=29, tm_hour=17, tm_min=12, tm_sec=45, tm_wday=2, tm_yday=149, tm_isdst=1), 0)
(time.struct_time(tm_year=2019, tm_mon=5, tm_mday=29, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=149, tm_isdst=1), 2)
其中
tm_hour
tm_min
tm_sec
对应于当前时间,而不是传递给
parse
的日期字符串中的0。如果我在一年后删除
,我会得到正确的输出:

d = c.parse("29/May/2019 00:00:00 +0000")

(time.struct_time(tm_year=2019, tm_mon=5, tm_mday=29, tm_hour=17, tm_min=12, tm_sec=45, tm_wday=2, tm_yday=149, tm_isdst=1), 0)
(time.struct_time(tm_year=2019, tm_mon=5, tm_mday=29, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=149, tm_isdst=1), 2)
我不喜欢修改日期字符串,因为这迫使我采用日期格式


有没有办法让
解析
在一年后忽略

是的,有。您可以使用
.replace
方法执行此操作,如下所示:

c=parsedatetime.Calendar()
e=“2019年5月29日:00:00:00+0000”
e、 替换(“:”,“”,1)
d=c.parse(e)
我添加的第一行首先定义了要解析为变量的内容,以便更轻松地处理它。下一行首先查找字符串中由第一个参数指定的“:”的所有实例。第二个参数指定在本例中用空格替换它的内容。第三个(可选)参数指定要替换的次数,从字符串的左侧开始。此参数的默认值为
all
,它替换字符串中该字符的所有实例


您可以找到有关
.replace()
方法的更多信息

是的,有。您可以使用
.replace
方法执行此操作,如下所示:

c=parsedatetime.Calendar()
e=“2019年5月29日:00:00:00+0000”
e、 替换(“:”,“”,1)
d=c.parse(e)
我添加的第一行首先定义了要解析为变量的内容,以便更轻松地处理它。下一行首先查找字符串中由第一个参数指定的“:”的所有实例。第二个参数指定在本例中用空格替换它的内容。第三个(可选)参数指定要替换的次数,从字符串的左侧开始。此参数的默认值为
all
,它替换字符串中该字符的所有实例


您可以找到有关
.replace()
方法的更多信息,理想情况下,我不想修改日期字符串。只是在问题中添加了这一点。理想情况下,我不想修改日期字符串。我的回答不会强迫你采用日期格式,因为它只会替换第一个冒号,不管它在哪里,如果你真的不能使用我的答案,我不认为有什么方法可以满足您的要求在github上打开一个问题:我的答案不会强迫您采用日期格式,因为它只会替换第一个冒号,无论它在哪里找到如果您确实无法使用我的答案,我不认为有什么方法可以满足您的要求在github上打开一个问题: