2010-11-16 72 views
5

我有以下正則表達式,可以讓我解析20%+,20%或20% - 50%'使用re.split。Python:將使用'%'和'{'作爲字符的正則表達式字符串進行格式化的字符串

'([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 

我一直無法獲得在正則表達式中工作的轉義字符。如何做到這一點的任何想法?

感謝,

邁克

回答

10

您可以使用%%使用舊式格式插入一個百分號:

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

同樣爲新的樣式格式,雙括號:

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