如何从包含无关字符的文本文件中提取日期?

2024-05-16 15:20:07 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的List1是使用python2.7在图像上使用OCR进程创建的

List1 = ["ERNR'W\xe2\x80\x98IWW/ftfi M '* \xe2\x80\x98\r\n", '\xe2\x80\x98 L n 4\r\n', 'May 2001\r\n', '31 Thursday ,_,,\r\n', '(161-214)\r\n', '0700\r\n']

它包括我希望过滤掉的信息,特别是日期信息,即Thursday 31 May 2001

我尝试拆分列表中的项目以获取此列表:

["'*", '(161-214)', ',_,,', '0700', '2001', '31', '4', 'L', 'M', 'May', 'Thursday', 'n']

我很容易过滤掉一年、一个月或一周中的某一天,这样我就可以实现Thursday May 2001。 但是,我无法找到一种方法来过滤一个月中的某一天—在本例中,可以区分无关的“4”和必需的“31”

一个月的某一天(这里是31)总是与一周的某一天相邻。 有没有办法用这个事实来提取“31”

那么,简而言之,我如何从List1获得Thursday 31 May 2001(以任何顺序)


Tags: 项目图像信息列表进程mayocrxe2
2条回答

如果您不想使用regex,这里有另一个解决方案

List1 = ["ERNR'W\xe2\x80\x98IWW/ftfi M '* \xe2\x80\x98\r\n", '\xe2\x80\x98 L n 4\r\n', 'May 2001\r\n', '31 Thursday ,_,,\r\n', '(161-214)\r\n', '0700\r\n']

days = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']

for string in List1:
    for day in days:
        index = string.lower().find(day)
        if  index != -1:
            dayNum = string[:index]

print('Day: ' + dayNum)

您可以使用正则表达式查找后跟工作日的数字:

import re

List1 = ["ERNR'W\xe2\x80\x98IWW/ftfi M '* \xe2\x80\x98\r\n", '\xe2\x80\x98 L n 4\r\n', 'May 2001\r\n', '31 Thursday ,_,,\r\n', '(161-214)\r\n', '0700\r\n']
day_and_weekday = re.compile('(\d+) ((mon|tue|wednes|thurs|fri|satur|sun)day)', re.I)

for text in List1:
  match = day_and_weekday.match(text)
  if match:
    print('Day : %s' % match.group(1))
    print('Weekday : %s' % match.group(2))

它输出:

Day : 31
Weekday : Thursday

相关问题 更多 >