Какие регулярные выражения python использовать?
Прогоняю строки через регулярное выражение для обрезания, строка кода
k = (s[:s.find('(')] + s[s.rfind(';')] + s[s.rfind('-') + 1:-1])
Строка, которая у меня получается
{'price': '<script type="text/javascript">document.write;icon_top_2_iphone"></span>
Безопасная сделка</a> 10 000 ₽ </div>\');</script'}
Мне нужно вытащить из строки
10 000 ₽
Не могу допереть как дальше двигаться
Ответы (1 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
Используйте
import re, ast, html
s = r"""{'price': '<script type="text/javascript">document.write;icon_top_2_iphone"></span>Безопасная сделка</a> 10 000 ₽ </div>\');</script'}"""
d = ast.literal_eval(s)
m = re.search(r'(?<!\d)\d{1,3}(?:\xA0\d{3})*\s*₽', html.unescape(d["price"]))
if m:
print( m.group() ) # => 10 000 ₽
См. пример работы кода в Python
ast.literal_eval(s) конвертирует строку в словарный объект. Нужная нам строка содержится в d["price"].
html.unescape(d["price"]) конвертирует HTML-сущности в их буквальное представление, например,   в неразрывный пробел.
Регулярное выражение (?<!\d)\d{1,3}(?:\xA0\d{3})*\s*₽ найдёт 1-3 цифры, потом 0 и более повторов неразрывного пробела + 3 цифр, потом 0 и более пробельных символов, а затем символ ₽, перед которыми нет другой цифры.