Или условие в одном регулярном выражении по последнему слову неработающего питона - PullRequest
0 голосов
/ 08 ноября 2019

Я преобразую банковские выписки в формате PDF в текстовый файл и построчно читаю текстовый файл и преобразую транзакции в формат JSON с помощью регулярных выражений. Теперь транзакция в тексте - некоторые транзакции, имеющие сумму в одной строке, а некоторая строка - в другой строке. Хотите написать одно регулярное выражение, которое может различать две строки. Ниже приведены входные строки, которые я получаю один за другим.

15/08/2019       UPI/922722731244/PAYMENT

01/08/2019       MAB CHARGES FOR JUN19                         4.94

Попытка регулярного выражения:

\s*(?P<'+DATE_STR+'>\d{2}/\d{2}/\d{4})\s+(?P<'+DESCRIPTION_STR+'>[\s\S\d\D\w\W]*)\s(?P<'+AMOUNT_STR+'>([\d.-]+))

Я ожидаю, что вывод с AMOUNT_STR будет в состоянии или в результате, и результат должен бытьнапример.

Я хочу, чтобы одно регулярное выражение, примененное к первому оператору, вывело бы вывод DATE_STR = '15 / 08/2019 'DESCRIPTION_STR =' UPI / 922722731244 / PAYMENT '(для первой строки)
ипри применении ко второму оператору выведите результат как

DATE_STR = '01 / 08/2019 'DESCRIPTION_STR =' ЗАРЯДКИ MAB ЗА 19 ИЮНЯ 'AMOUNT_STR =' 4.94 '

1 Ответ

0 голосов
/ 12 ноября 2019

Наконец-то получили решение. В регулярном выражении AMOUNT_STR регулярно проверяет число, наконец, с помощью "."(точка), поскольку сумма может содержать «,» (запятая), поэтому я использую регулярное выражение:

\ s * (? P <'+ DATE_STR +'> \ d {2} / \ d {2} / \ d {2}) \ s (? P <'+ DESCRIPTION_STR +'> (. ?) (? = \ d + \, \ d *. \ d + | $)) (? P<'+ AMOUNT_STR +'> \ d + \, \ d . \ D +) *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...