我有一个识别价格格式字符串的正则表达式:
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))
当我尝试运行最终的“单词”函数时,出现以下错误:
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
有没有办法做我想做的事?是否有多余的'|' 集合中的人物?