我正在读取OCR图像文件并将其转换为文本。现在,我需要提取一个特定的文本。
生成的文本(不完整的文本):
FROM: 2902 W SWEETWATER AV #1100
Phoenix, AZ 95029
TO: BANNER THUNDERBIRD MED CTR
5855 W THUNDERBIRD RD
Glendale, AZ 85307
c9 23 1975 x
我需要在 FROM:段下提取 95029 。我当时想先获取FROM:段的行号,然后再加上一个来获取下一个行号,并应用正则表达式来检索文本。但是,我无法输入下一个行号的文本。
for num, line in enumerate(text.splitlines()):
if 'FROM:' in line:
num = num+1
print(num)
break
#print(line)
我可以获取行号,但不能获取文本。请提出建议。
答案 0 :(得分:1)
将拆分的文本列表保存到变量中,text_list = text.splitlines()
之后,您可以使用text_list[num+1]
尝试这样的事情:
text = """FROM: 2902 W SWEETWATER AV #1100
Phoenix, AZ 95029
TO: BANNER THUNDERBIRD MED CTR
5855 W THUNDERBIRD RD
Glendale, AZ 85307
c9 23 1975 x"""
desired_line = ''
text_list = text.splitlines()
for num, line in enumerate(text_list):
if 'FROM:' in line:
desired_line = text_list[num+1]
break
print(desired_line) # prints desired line
print(desired_line.split()[-1]) # prints Number you seeked
答案 1 :(得分:0)
如果“发件人”地址的格式相同,您也可以通过正则表达式进行操作。类似的正则表达式也可以用于查找“收件人”地址和邮政编码。
text = """FROM: 2902 W SWEETWATER AV #1100
Phoenix, AZ 95029
TO: BANNER THUNDERBIRD MED CTR
5855 W THUNDERBIRD RD
Glendale, AZ 85307
c9 23 1975 x"""
import re
res=re.search("FROM:.*\n(([a-zA-Z]+),\s*([A-Z]{2})\s+(\d{5})\n)",text)
if res is not None:
print(res.group(0)) ## From address
print(res.group(1)) ## city, state zip----Phoenix, AZ 95029
print(res.group(4)) ## zip---95029