Получение значений с регулярными выражениями из строки; - PullRequest
0 голосов
/ 10 октября 2019

У меня есть такая строка:

Доход от некоторых расчетов: 11111.11 com: 11.11 outgo: 22222.22 com: 22.22 отмена: 33333.33 com: 333.33

Заказчасти дохода, исходящие и отменяемые части могут быть разными.

Мне нужно получить сумму дохода и соответствующую комиссию

, а также сумму исходящих платежей и комиссионные

а также аннулированная сумма и ее комиссия

Теперь я делаю это следующим образом: сначала я получаю строку доход: 11111.11 ком: 11.11 с выражением income:.*?com:(\-){0,1}[0,1,2,3,4,5,6,7,8,9,.]+ после этого я получаюподстрока доход: 11111.11 и тогда я получу сумму

и так далее

Я думаю, что должен быть лучший способ сделать это. Может кто-нибудь сказать мне, как?

1 Ответ

0 голосов
/ 10 октября 2019

Поскольку вы не указали, какой язык вы используете, вот способ получить пары (элемент / комиссия) в Python:

Python 3.7.4 (default, Aug 12 2019, 14:45:07) 
[GCC 9.1.1 20190605 (Red Hat 9.1.1-2)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> from pprint import pprint
>>> s='Some calculations income:11111 com:11 outgo:22222 com:22 cancel:33333 com:333'
>>> pairs = re.compile(r'(\w+:\d+)\s(com:\d+)')
>>> pprint(pairs.findall(s))
[('income:11111', 'com:11'),
 ('outgo:22222', 'com:22'),
 ('cancel:33333', 'com:333')]
>>> 

Регулярное выражение здесь просто (\w+:\d+)\s(com:\d+).

Если у вас есть числа с плавающей запятой справа от пар ключ: значение, измените регулярное выражение на (\w+:[\d.]+)\s(com:[\d.]+):

>>> s='Some calculations income:11111.11 com:11.11 outgo:22222.22 com:22.22 cancel:33333.33 com:333.33'
>>> pairs = re.compile(r'(\w+:[\d.]+)\s(com:[\d.]+)')
>>> pprint(pairs.findall(s))
[('income:11111.11', 'com:11.11'),
 ('outgo:22222.22', 'com:22.22'),
 ('cancel:33333.33', 'com:333.33')]
>>> 

Вычисления зависят от того, какой язык вы используете.

Поскольку у вас уже есть список пар, вам просто нужно разделить их на :, преобразовать правильное значение в float и затем выполнить вычисления.

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