2010-11-16 12 views
5

Ich habe den folgenden regulären Ausdruck, der Prozentsätze wie '20% + ', '20%' oder '20% analysieren kann - 50% mit re.split.Python: String formatiert eine Regex-Zeichenfolge, die sowohl '%' als auch '{' als Zeichen verwendet

Ich möchte String-Formatierung verwenden, um die Serien-IDs (d. H. "+ -") als Argument von config.py zu übergeben.

SERIES = '+-' 

Die beiden Methoden, die ich ausprobiert habe, führten zu Fehlern. New-style Formatierung läuft in den folgenden Fehler (aufgrund der {m, n} usage):

>>> import config 
>>> regex = '([0-9]{1,3}[%])([{0}]?)'.format(config.SERIES) 
KeyError: '1,3' 

alten Stil Formatierung seine eigenen Probleme (aufgrund der Zeichen%) hat:

>>> import config 
>>> regex = '([0-9]{1,3}[%])([%s]?)' % (config.SERIES) 
unsupported format character ']' (0x5d) at index 14 

Ich konnte nicht entkommen Zeichen in der Regex arbeiten. Irgendwelche Ideen, wie das geht?

Danke,

Mike

Antwort

10

Sie %% verwenden können, ein Prozent-Zeichen mit der alten Stil Formatierung einfügen:

'([0-9]{1,3}[%%])([%s]?)' % (config.SERIES) 

Ebenso für die neuen Stil Formatierung, doppelte Klammern :

'([0-9]{{1,3}}[%])([{0}]?)'.format(config.SERIES) 
Verwandte Themen