Python: String formatting a regex string that uses both '%' and '{' as characters
I have the following regular expression, which lets me parse percentages like '20%+', '20%', or '20% - 50%' using re.split.
'([0-9]{1,3}[%])([+-]?)'
I want to use string formatting to pass the series identifiers (i.e. '+-') as an argument from config.py.
SERIES = '+-'
The two methods I've tried produced errors. New-style formatting runs into the following error (due to the {m,n} usage):
>>> import config
>>> regex = '([0-9]{1,3}[%])([{0}]?)'.format(config.SERIES)
KeyError: '1,3'
Old-style formatting has its own problems (due to the '%' character):
>>> import config
>>> regex = '([0-9]{1,3}[%])([%s]?)' % (config.SERIES)
unsupported format character ']' (0x5d) at index 14
I haven't been able to get escape characters working inside the regex. Any ideas on how do do this?
Thank开发者_Python百科s,
Mike
You can use %%
to insert a percent-sign using the old-style formatting:
'([0-9]{1,3}[%%])([%s]?)' % (config.SERIES)
Similarly for the new-style formatting, double the braces:
'([0-9]{{1,3}}[%])([{0}]?)'.format(config.SERIES)
精彩评论