python - “后天”在 Python 的 parsedatetime 库中不起作用

标签 python date datetime time

我正在使用 Python 的 parsedatetime 库从自然语言进行日期时间解析。它将自然语言解析为许多场景的日期时间。例如 下周一下午 5 点、`下个月等。

但是当用自然语言给出后天前天时,它不理解。

例如,“后天”获取明天的日期时间。

这是代码片段:

from datetime import datetime
import parsedatetime as pdt

plain_text='day after tomorrow'   # Natural Language input

str_parsed_date_time = ''
cal = pdt.Calendar()
now = datetime.now()
for time_string in [plain_text]:
    parsed_date_time = (cal.parseDT(time_string, now)[0])
    str_parsed_date_time = datetime.strftime(parsed_date_time, '%Y-%m-%d %H:%M:%S')  # Convert date time to string
print(str_parsed_date_time)

今天的日期是 2017 年 4 月 18 日 (2017-04-18)

库输出 2017-04-19 而不是 2017-04-20

可能是什么原因?

最佳答案

parsedatetime 期望在其单位前面有一个数量。所以它将成功解析类似后天的内容,但不会解析后天

测试代码:

import parsedatetime as pdt

test_text = [
    'day after tomorrow',
    'the day after tomorrow',
    'a day after tomorrow',
    'an day after tomorrow',
    'one day after tomorrow',
    'two day after tomorrow',
    ]

cal = pdt.Calendar()
for time_string in test_text:
    result = cal.nlp(time_string)[0]
    print("Got: %s  from:'%s'  original:'%s'" % (
        result[0].date(), result[-1], time_string))

结果:

Got: 2017-04-20  from:'after tomorrow'  original:'day after tomorrow'
Got: 2017-04-20  from:'after tomorrow'  original:'the day after tomorrow'
Got: 2017-04-21  from:'a day after tomorrow'  original:'a day after tomorrow'
Got: 2017-04-21  from:'an day after tomorrow'  original:'an day after tomorrow'
Got: 2017-04-21  from:'one day after tomorrow'  original:'one day after tomorrow'
Got: 2017-04-22  from:'two day after tomorrow'  original:'two day after tomorrow'

请注意,在前两个结果中,from 字符串与original 字符串不匹配,因为返回的字符串是解析时使用的字符串,而parsedatetime 确实识别了 day 的单位,因此忽略了它。

关于python - “后天”在 Python 的 parsedatetime 库中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43476926/

相关文章:

python - 使用 pandaSDMX 将 OECD 数据加载到 pandas 中

python - 如何从 csv 文件中检索特定行和列

PHP 日期格式

python - 从 2 列创建日期对象

python - PyTorch 中是否有提取图像补丁的功能?

ruby - 日期转换问题,使用 rails 3.0.7 和 ruby​​ 1.9.2

JavaScript Moment.js 试图获得 2 个日期时间之间的差异

python - Pandas 按具有重复日期时间的组重新采样

java - 安卓java时间

Python 与 C - 在 Windows 中处理环境变量