List1
是使用Python 2.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'?
那么,简而言之,我如何从Thursday 31 May 2001
获得List1
(以任何顺序)?
答案 0 :(得分:0)
您可以使用正则表达式查找一个数字,然后是工作日:
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
答案 1 :(得分:0)
如果您不想使用正则表达式,这是另一种解决方案。
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)