Печать одной строки в многострочную строку - PullRequest
0 голосов
/ 13 января 2020

Мне удается использовать pytesseract для преобразования изображения счета в текст.

Многострочная строка выглядит следующим образом:

Receipt No: 20191220.001
Date: 20 December 2019
Invoice amount: $400.00

Я хотел бы извлечь номер счета, только номер (то есть: 20191220.001) с использованием подстроки. Мне удается получить начальный индекс через index = string.find('Receipt No: '), но когда я использую функцию подстроки для извлечения числа print(string[index:]), я получил следующий результат:

20191220.001
Date: 20 December 2019
Invoice amount: $400.00

Но я хотел извлечь только первую строку. Номера счетов-фактур не определяются только из 12 символов, их может быть больше или меньше в зависимости от поставщика. Как мне извлечь только номер счета? Я делаю это для автоматизации процесса учета.

Ответы [ 5 ]

1 голос
/ 13 января 2020

Вы можете использовать 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())
0 голосов
/ 13 января 2020

Если вы заботитесь только о первой строке, вы можете найти первое вхождение символа конца строки в качестве конца вашего номера. Обратите внимание, что начало вашего номера - это конец подстроки («Receipt No:»), а функция 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
0 голосов
/ 13 января 2020

Вы можете попробовать с функцией разделения.

с открытым ("filename", 'r') в качестве набора данных:

for i in dataload.readlines():

    if "Receipt No:" in i:

        print(i.split(":")[1].strip())

output-

20191220.001

if "Receipt No:" в я: ---> вы можете изменить, если "**" параметр в соответствии с вашим требованием

0 голосов
/ 13 января 2020

Разделите вашу строку в списке, разделив ее на "\ n". Вы получите каждую часть строки, разделенную символом новой строки, как элемент списка. Затем вы можете принять участие, которое вы хотите

string = """Receipt No: 20191220.001
Date: 20 December 2019
Invoice amount: $400.00"""

your_list = string.split("\n")
data = your_list[0]
0 голосов
/ 13 января 2020

Попробуйте:

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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...