gpt4 book ai didi

python - 处理来自 parsedatetime 的不同结果

转载 作者:太空宇宙 更新时间:2023-11-03 12:16:45 26 4
gpt4 key购买 nike

在过去 15 年左右的时间里,我只是偶尔使用 Perl 工作,之后我正在尝试学习 Python。

我无法理解如何处理来自 parsedatetime 的 Calendar.parse() 的 parse 方法的两种不同类型的结果

给定这个脚本:

#!/usr/bin/python

import parsedatetime.parsedatetime as pdt
import parsedatetime.parsedatetime_consts as pdc
import sys
import os

# create an instance of Constants class so we can override some of the defaults

c = pdc.Constants()

# create an instance of the Calendar class and pass in our Constants # object instead of letting it create a default

p = pdt.Calendar(c)

while True:
reply = raw_input('Enter text:')
if reply == 'stop':
break
else:
result = p.parse(reply)
print result
print

这个示例运行:

Enter text:tomorrow
(time.struct_time(tm_year=2009, tm_mon=11, tm_mday=28, tm_hour=9, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=332, tm_isdst=-1), 1)

Enter text:11/28
((2009, 11, 28, 14, 42, 55, 4, 331, 0), 1)

我不知道如何获得输出,以便我可以像这样始终如一地使用结果:

print result[0].tm_mon, result[0].tm_mday

这在输入为“11/28”的情况下不起作用,因为输出只是一个元组而不是 struct_time。

可能是一件简单的事情..但对这个新手来说不是。从我的角度来看, Calendar.parse() 的输出是不可预测的并且难以使用。任何帮助表示赞赏。蒂亚。

最佳答案

我知道这是一个老问题,但我昨天遇到了这个问题,这里的答案是不完整的(如果 parse() 返回日期时间,它将失败)。

来自 parsedatetime 文档:

parse() 返回一个元组 ( result, type ),其中 type 指定以下之一:

   0 = not parsed at all
1 = parsed as a date (of type struct_time)
2 = parsed as a time (of type struct_time)
3 = parsed as a datetime (of type datetime.datetime)

这有点奇怪,也许不是最清晰的方法,但它有效并且非常有用。

这里有一小段代码,可以将返回的任何内容转换为正确的 python 日期时间:

import parsedatetime.parsedatetime as pdt

def datetimeFromString( s ):

c = pdt.Calendar()
result, what = c.parse( s )

dt = None

# what was returned (see http://code-bear.com/code/parsedatetime/docs/)
# 0 = failed to parse
# 1 = date (with current time, as a struct_time)
# 2 = time (with current date, as a struct_time)
# 3 = datetime
if what in (1,2):
# result is struct_time
dt = datetime.datetime( *result[:6] )
elif what == 3:
# result is a datetime
dt = result

if dt is None:
# Failed to parse
raise ValueError, ("Don't understand date '"+s+"'")

return dt

关于python - 处理来自 parsedatetime 的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1810432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com