开发者

Python: String formatting a regex string that uses both '%' and '{' as characters

开发者 https://www.devze.com 2023-01-25 04:56 出处:网络
I have the following regular expression, which lets me parse percentages like \'20%+\', \'20%\', or \'20% - 50%\' using re.split.

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)
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号