2017-03-13 6 views
0

Warum ist das 'bc' Ergebnis und nicht 'abc' ?:Entfernen Newline mit re.sub

>>> import re 
>>> re.sub('-\n([a-z])', '','-\nabc',re.M) 
'bc' 
+0

weil '[az]' nur 1 Zeichen benötigt – ryugie

+0

Capturing ist nutzlos, wenn Sie keinen Bezug auf das Capture in der Ersetzungszeichenfolge setzen: 'r '\ 1'' –

Antwort

3

re.sub ersetzen abgestimmte Muster mit Ersatz String. ([a-z]) hier ist auch abgestimmt, so dass es entfernt wird. Um dies zu vermeiden, können Sie sich verwenden voraus Syntax:

import re 
re.sub('-\n(?=[a-z])', '','-\nabc',re.M) 
# 'abc' 
0

Sie können nur die Zeichenfolge angeben, ersetzt werden:

re.sub('-\n', '','-\nabc')

kehrt nur die abc

enter image description here