[英]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.