Как найти ценник со знаком доллара, разделителем тысяч и десятичной запятой по Python Regex - PullRequest
0 голосов
/ 10 декабря 2018

Я хочу разобрать " $ 1000.00 " одним куском (строкой) из следующей строки:

" потерял книжный шкаф ($ 1,000.00) после ожидания почти трехмесяцев."

Как мне разработать шаблон регулярного выражения в функции re.findall ()?Спасибо!

То, что я пробовал, это re.findall(r"\d+[.,]?\d+", text), и я получил только: ['1,000', '00']

Однако я хотел, чтобы мой результат был: ['$ 1,000.00']

1 Ответ

0 голосов
/ 10 декабря 2018

Как найти ценник со знаком доллара, разделителем тысяч и десятичной точкой по регулярному выражению Python


money_parser egg это именно то, что вам нужно:

Установка:

pip install money_parser

Использование:

from money_parser import price_str
x = "lost a bookcase ($1,000.00) after waiting for nearly three months."
print(price_str(x))
# 1000.00

Старый ответ

Вы можете использовать что-то вроде:

x = "lost a bookcase ($1,000.00) after waiting for nearly three months."
result =  re.findall(r"\b\$?[\d,.]+\b", x)

['1,000.00']


Regex Demo
Python Demo


Regex Пояснение enter image description here


Примечания:

  1. Не пуленепробиваемый регулярное выражение \b\$?[\d,.]+\b, но достаточно для начала работы.
  2. регулярное выражение используется money_parser:

_CLEANED_PRICE_RE = re.compile('[+-]?(?:\d{1,3}[.,]?)+')
_FRACTIONAL_PRICE_RE = re.compile('^([\d.,]+)[.,](\d{1,2})$')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...