2016-04-25 6 views
-1

Sagen, ich habe die folgende Zeichenfolge:hinzufügen Charakter zu Python regulärer exprsession

mystring='Main St and I295'

ich es will 'Main St and I-295' anstatt sein. Wie kann ich den Bindestrich zu einer beliebigen Zeichenkette hinzufügen, in der eine Zahl direkt gefolgt von "I" ohne Leerzeichen steht?

kann ich das Muster wie folgt identifizieren:

>>> re.findall('I\d+',mystring) 
['I295'] 
>>> 

Aber wie kann ich den Strich zu diesem Muster hinzufügen?

Ich versuchte re.sub('I\d+', 'I-\d+',mystring), aber das gibt mir eine Zeichenfolge Darstellung meines Musters.

+0

're.sub (r'i (\ d +)‘, r'I- \ 1' , mystring) ' – anubhava

Antwort

4

Es ist Zeit für Sie, über Regex capture groups zu lernen!

In Ihrem Muster, schließen Sie die Daten, die Sie in (parens) aufnehmen möchten, etwa so:

>>> mystring = 'Main St and I295' 
>>> pattern = r'I(\d+)' 
>>> re.sub(pattern, 'I-\g<1>', mystring) 
'Main St and I-295' 
Verwandte Themen