Python:字符串格式化使用'%'和'{'作为字符的正则表达式字符串

时间:2010-11-16 22:20:09

标签: python regex

我有以下正则表达式,它允许我使用re.split解析“20%+”,“20%”或“20% - 50%”等百分比。

'([0-9]{1,3}[%])([+-]?)'

我想使用字符串格式将序列标识符(即'+ - ')作为config.py中的参数传递。

SERIES = '+-'

我尝试过的两种方法都会产生错误。新式格式化会遇到以下错误(由于{m,n}用法):

>>> import config
>>> regex = '([0-9]{1,3}[%])([{0}]?)'.format(config.SERIES)
KeyError: '1,3'

旧式格式化有其自身的问题(由于'%'字符):

>>> import config
>>> regex = '([0-9]{1,3}[%])([%s]?)' % (config.SERIES)
unsupported format character ']' (0x5d) at index 14

我无法在正则表达式中使用转义字符。关于如何做到这一点的任何想法?

谢谢,

麦克

1 个答案:

答案 0 :(得分:10)

您可以使用%%使用旧式格式插入百分号:

'([0-9]{1,3}[%%])([%s]?)' % (config.SERIES)

同样对于新式格式,请加倍括号:

'([0-9]{{1,3}}[%])([{0}]?)'.format(config.SERIES)