Python: Строка, форматирующая строку регулярного выражения, которая использует как символы '%' и '{' в качестве символов

У меня есть следующее регулярное выражение, которое позволяет мне анализировать проценты, такие как «20% +», «20%» или «20% - 50%» с использованием re.split.

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

Я не был может заставить escape-символы работать внутри регулярного выражения. Есть идеи, как это сделать?

Спасибо,

Майк

5
задан MikeRand 16 November 2010 в 22:20
поделиться