gpt4 book ai didi

python - 如何使用 dateparser 从字符串中提取实际日期?

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

问题

当我使用 dateparser 在字符串中搜索日期时,我得到一个元组,其中包含日期作为字符串和 datetime.datetime 对象 - 我只想要该字符串,并且其中有多个,如果可能,每个单独。

关于如何将文本与结果隔离的任何想法 - 删除 datetime.datetime 对象?

原因:

我想使用该变量来解析找到的日期之前的单词。

from dateparser.search import search_dates
para = search_dates("Competition opens 1/03/19 at 6:00 AM and closes 17/05/19 at 5:00 PM", settings={'STRICT_PARSING': True, 'DATE_ORDER': 'DMY'})
for x in para[0]:
print (x)
print(type(x))

我正在寻找的是“2019 年 1 月 3 日上午 6:00 和”

输出:

1/03/19 at 6:00 AM and
<class 'str'>
2019-03-01 06:00:00
<class 'datetime.datetime'>

尝试

我尝试过以下方法:

第一:

from dateparser.search import search_dates
para = search_dates("Competition opens 1/03/19 at 6:00 AM and closes 17/05/19 at 5:00 PM", settings={'STRICT_PARSING': True, 'DATE_ORDER': 'DMY'})
for x in para[0]:
date_time = x[0]
date_string = x[1]
print(date_time)

输出:

TypeError: 'datetime.datetime' object is not subscriptable

还有,这个:

from dateparser.search import search_dates
para = search_dates("Competition opens 1/03/19 at 6:00 AM and closes 17/05/19 at 5:00 PM", settings={'STRICT_PARSING': True, 'DATE_ORDER': 'DMY'})
for x in para[0]:
print (x(0))

输出:

TypeError: 'str' object is not callable

最后:

from dateparser.search import search_dates
para = search_dates("Competition opens 1/03/19 at 6:00 AM and closes 17/05/19 at 5:00 PM", settings={'STRICT_PARSING': True, 'DATE_ORDER': 'DMY'})
for x in para:
date_string = x[0]
print(date_string)
print(type(date_string))

输出:

1/03/19 at 6:00 AM and
<class 'str'>
17/05/19 at 5:00 PM
<class 'str'>

最佳答案

正如您所指出的,元组包含两个元素。一个字符串和一个日期时间对象。例如

('1/03/19 at 6:00 AM and', datetime.datetime(2019, 3, 1, 6, 0))
  • 您可以通过对元组建立索引来仅隔离字符串。

例如

from dateparser.search import search_dates
para = search_dates("Competition opens 1/03/19 at 6:00 AM and closes 17/05/19 at 5:00 PM", settings={'STRICT_PARSING': True, 'DATE_ORDER': 'DMY'})
for x in para:
date_string = x[0]
print(date_string)

您可能还想从文本中删除“和”。您可以通过剥离它来做到这一点。即

date_string = x[0].strip('and')

输出

1/03/19 at 6:00 AM 
17/05/19 at 5:00 PM

如果您只想使用字符串并希望完全丢弃日期时间,请使用列表理解来创建 para 变量。在下面的示例中,para 仅填充了字符串列表而不是元组。日期时间被完全丢弃

para = [d[0] for d in search_dates("Competition opens 1/03/19 at 6:00 AM and closes 17/05/19 at 5:00 PM", settings={'STRICT_PARSING': True, 'DATE_ORDER': 'DMY'})]
print(para)
# Output is just a 1D list of strings
# ['1/03/19 at 6:00 AM and', '17/05/19 at 5:00 PM']
print(para[0].strip('and'))
# Output is first string in the list with 'and' stripped off
# 1/03/19 at 6:00 AM

关于python - 如何使用 dateparser 从字符串中提取实际日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54629655/

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