簡體   English   中英

在多行字符串中打印一行

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM