Ich möchte die Zeichenfolge, die mit Pythons Ersatz für reguläre Ausdrücke übereinstimmt, als Ersatz verwenden. Ich vergesse es jedes Mal, also mach dir eine Notiz
Angenommen, Sie haben eine solche Liste in englischer Analyse.
Liste mit englischen Wörtern
sentence = ['During', 'this', 'time', ',', 'many', 'chatterbots', 'were', 'written', 'including',
'PARRY', ',', 'Racter', ',', 'and', 'Jabberwacky', '.']
Wenn Sie dies zu einer Zeichenkette (des gesamten Satzes) machen möchten, können Sie zuerst an Join denken.
Versuchen Sie, mit einem Leerzeichen mit halber Breite zu verbinden
' '.join(sentence)
#During this time , many chatterbots were written including PARRY , Racter , and Jabberwacky .
Ja ... Wie Sie vielleicht vermutet haben, befindet sich vor dem .
oder,
ein halbbreites Leerzeichen **.
ich war in Schwierigkeiten
Was dann tun? Das stimmt. Durch einen regulären Ausdruck ersetzen!
Aber wie ersetzt man es durch "," oder "."?
Lass es uns vorerst tun.
Korrigieren Sie es wie englischen Text
import re
bad = ' '.join(sentence)
fixed = re.sub(r' ([,.])', r'\1', bad)
# r' [,.]' :Raum halber Breite+「,」「.Irgendein von
print(fixed)
Ausgabe
During this time, many chatterbots were written including PARRY, Racter, and Jabberwacky.
Komplett!
Bei Verwendung von re sub Fügen Sie in die Musterzeichenfolge des ersten Arguments den Teil ein, den Sie in () wiederverwenden möchten. Geben Sie die Anzahl von () an, die Sie für den Teil verwenden möchten, für den Sie die Zeichenfolge des zweiten Arguments ersetzen möchten: ": \ 1, wenn es das erste ist". Auf dieser Grundlage werde ich einige Beispiele schreiben.
check.py
bad = 'including PARRY , Racter , and Jabberwacky .'
#Der von früher
re.sub(r' ([,.])', r'\1', bad)
Out[4]: 'including PARRY, Racter, and Jabberwacky.'
# 「(Die Lage ist anders
re.sub(r'( [,.])', r'\1', bad)
Out[5]: 'including PARRY , Racter , and Jabberwacky .' # == bad
# 「()Versuchen Sie, den Raum mit einzuschließen
re.sub(r'( )([,.])', r'\1', bad)
Out[6]: 'including PARRY Racter and Jabberwacky '
#Ändern Sie die zu verwendende Nummer
re.sub(r'( )([,.])', r'\2', bad)
Out[7]: 'including PARRY, Racter, and Jabberwacky.'
#Versuchen Sie, eine Verbindung herzustellen und zu verwenden
re.sub(r'( )([,.])', r'\1\2', bad)
Out[8]: 'including PARRY , Racter , and Jabberwacky .' # == bad
#Wie wäre es mit dem Gegenteil
re.sub(r'( )([,.])', r'\2\1', bad)
Out[9]: 'including PARRY, Racter, and Jabberwacky. ' # != bad
#Versuche zu spielen
re.sub(r'( )([,.])', r'\1 Hoge\2', bad)
Out[12]: 'einschließlich PARRY Hoge,Racter Hoge,und Jabberwacky Hoge.'
Stellen Sie sicher, dass `` \ num' mit
rvorangestellt wird. <sup> <a href="#%E8%BF%BD%E8%A8%9820170119"> Zusätzliche Hinweise </a> <sup /> Gutes Beispiel
r '\ 1'`
Schlechtes Beispiel "\ 1"
Wenn Sie einen Schrägstrich "" hinzufügen, funktioniert dies ohne das "r".
*** Vielen Dank an Shiracamus, dass Sie uns in den Kommentaren informiert haben. *** ***
Im Fall von "\ num" ist es notwendig, "r" hinzuzufügen, aber wenn es "\ num" ist, ist es nicht notwendig, "r" hinzuzufügen. r bedeutet raw (raw = raw, raw) und ist eine raw (raw) Zeichenfolge, die Backslashes nicht als Escapezeichen behandelt.
>>> import re
>>> bad = 'including PARRY , Racter , and Jabberwacky .'
>>> re.sub(' ([,.])', '\\1', bad)
'including PARRY, Racter, and Jabberwacky.'
Wenn Sie weitere Fragen haben, teilen Sie uns dies bitte in den Kommentaren mit.