首页 > 解决方案 > 如何使用正则表达式在任何文本中查找日期?

问题描述

我有一个从 OCR 程序中提取的文本。到目前为止,我设法获得了我想要的每个元素,除了日期。我的日期在某些情况下会是这样,ASDICA>31.04.2019END($>而在其他情况下会带有空格(很容易提取)。我的问题:是否有任何没有嵌套for循环的快速函数来解析文本并提取日期?

我的第一个业余想法是用常见的日期分隔符构建一个列表,解析文本,保存在文本中找到的元素的位置,然后搜索它们的亲属来构建一个日期。

这花费了很多时间并且证明很麻烦,因为由于 OCR 的行为,我遇到了许多转义字符。

我的理想输出是31/04/2019,但只要我得到一个包含文本日期的列表,我就可以处理符号替换。

标签: regexpython-3.xexpression

解决方案


首先SDICA>31.04.2019END($>不是一个有效的日期:) 四月一个月只有 30 天。

但是要回答您的问题,您可以使用dateutil模块,尤其是解决手头问题的parser.parse函数

from dateutil import parser

#Parse date from the string, fuzzy parameter can find hidden datetime string around a wall of text
print(parser.parse('ASDICA>31.01.2019END($>', fuzzy=True))

输出将是2019-01-31 00:00:00


推荐阅读