5

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?

Thanks,

Mike

1 Answer 1

12

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)
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.