[英]Printing a single line in a multi-line string
我设法使用 pytesseract 将发票图像转换为文本。
多行字符串如下所示:
Receipt No: 20191220.001
Date: 20 December 2019
Invoice amount: $400.00
我想提取发票编号,只是使用子字符串的编号(即:20191220.001)。 我设法通过index = string.find('Receipt No: ')
获取起始索引,但是当我使用 substring 函数提取数字print(string[index:])
我得到以下结果:
20191220.001
Date: 20 December 2019
Invoice amount: $400.00
但我只想提取第一行。 发票编号并非仅定义为 12 个字符,根据供应商的不同,可能会有更多或更少的字符。 如何仅提取发票编号? 我这样做是为了自动化会计流程。
您可以使用split
:
s = '''Receipt No: 20191220.001
Date: 20 December 2019
Invoice amount: $400.00'''
number = s.split('Receipt No: ')[1].split('\n')[0]
print(number)
输出:
20191220.001
或者如果你想使用find
,你可以这样做:
index1 = s.find(':')
index2 = s.find('\n')
print(s[index1+1:index2].strip())
尝试:
import re
s = """
Receipt No: 20191220.001
Date: 20 December 2019
Invoice amount: $400.00"""
p = re.compile("Receipt No\: (\d+.\d+)")
result = p.search(s)
index = result.group(1) #'20191220.001'
使用“\\n”分割将列表中的字符串分隔开 您将获得由换行符分隔的字符串的每个部分作为列表元素。 然后你可以选择你想要的部分
string = """Receipt No: 20191220.001
Date: 20 December 2019
Invoice amount: $400.00"""
your_list = string.split("\n")
data = your_list[0]
您可以尝试使用拆分功能。
使用 open("filename",'r') 作为数据加载:
for i in dataload.readlines():
if "Receipt No:" in i:
print(i.split(":")[1].strip())
输出-
20191220.001
if "Receipt No:" in i: ---> 您可以根据您的要求更改 if "**" 参数
如果您只关心第一行,您可以找到第一个出现的行结束字符作为您号码的结尾。 请注意,您的号码的开头是子字符串的结尾(“收据编号:”),而 find 函数返回子字符串的开头。
string = '''Receipt No: 20191220.001
Date: 20 December 2019
Invoice amount: $400.00'''
sub = 'Receipt No: '
start = string.find(sub) + len(sub)
end = string.find('\n')
print(string[start:end])
如果您还关心其他线路。 您可以使用 split 并分别处理每一行。
lines = string.split('\n')
sub = 'Receipt No: '
index = lines[0].find(sub) + len(sub)
print(lines[0][index:])
# Process line 1
# Process line 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.