У меня есть регулярное выражение, которое идентифицирует строки в ценовом формате:
import re
price = re.compile(r'^.*[\$\£\€]\s?\d{1,3}(?:[.,]\d{3})*(?:[.,]\d{1,2})?.*$')
Однако я хотел бы иметь функцию, которая может поместить список символов валюты в первый набор символов выше, ачем только три, которые я определил.Например,
import re
currencies = ['$', '£', '€']
key_characters = '|'.join(currencies)
price_re = re.compile(r'^.*[({})]\s?\d{1,3}(?:[.,]\d{3})*(?:[.,]\d{1,2})?.*$')
word = re.compile(price_re.format(key_characters))
Когда я пытаюсь запустить последнюю функцию 'word', я получаю следующие ошибки:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: '1,3'
Когда я удаляю одно из двух чисел, перечисленных вышетретья строка Traceback меняется на:
ValueError: cannot switch from automatic field numbering to manual field specification
Есть ли способ сделать то, что я хотел бы?Это вопрос наличия избыточного «|»символы в наборе?