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
%s is used as a placeholder for string values you want to inject into a formatted string. %d is used as a placeholder for numeric or decimal values. For example (for python 3) print ('%s is %d years old' % ('Joe', 42)) Would output Joe is 42 years old.
Regular expressions use two types of characters in the matching pattern string: Meta characters are characters having a special meaning, similar to * in wild card. Literals are alphanumeric characters. Following list of characters are called the metacharacters.
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With