gpt4 book ai didi

Python - dateutil.parser 中的模糊

转载 作者:行者123 更新时间:2023-12-05 05:33:29 25 4
gpt4 key购买 nike

我正在尝试在字符串中查找日期。这就是我正在做的。

def _is_date(string, fuzzy=False):
try:
return parse(string, fuzzy=fuzzy)
except ValueError:
return False

它适用于一些:-

>>> _is_date('delivered 22-jun-2022', fuzzy=True)
2022-06-22 00:00:00
>>> _is_date('04 sep, lets meet', fuzzy=True)
2022-09-04 00:00:00

但是,它会为其他人返回不正确的结果。

>>> _is_date('Ive 4 kids', fuzzy=True)
2022-09-04 00:00:00
>> _is_date('samsung galaxy m32 (black,', fuzzy=True)
2022-09-23 00:00:32
>> _is_date('4gb ram..', fuzzy=True)
2022-09-04 00:00:00

我该如何解决这个问题? 或者有任何其他方法可以帮助我解决这个问题陈述。

最佳答案

模糊标志并不意味着按照您使用它的方式使用。它用于处理类似“今天是 22 年 9 月 23 日”的字符串;对于此示例,解析将忽略“今天是”并解析日期/时间部分。

通过实验,我发现当使用 fuzzy=True 调用时,parse 会尝试将任何数字字符解释为日期的一部分。查看您期望产生 False 的示例:

  • “Ive4 kids”返回日期/时间 2022-09-04 00 - 4 被认为是当月的 4 号
  • “samsung galaxy m32(黑色)”给出 2022-09-23 00:00:32 - 32 成为今天午夜后的秒数
  • 4gb ram..' - 同样,4 被认为是当月的第 4 天

看来您无法像您希望的那样使用 fuzzy;在将字符串传递给解析之前,您必须以某种方式清理字符串,可能会在调用解析之前拒绝那些没有合法日期的字符串。

您可能会发现尝试使用 fuzzy_with_tokens=True 而不是模糊会很有启发性。将 fuzzy_with_tokens 设置为 True,您将收到一个包含日期时间对象的双项元组,第一项包含结果日期,第二项包含忽略的文本。此外,这可能对您有用:https://dateutil.readthedocs.io/en/stable/parser.html

关于Python - dateutil.parser 中的模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73830214/

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