Ändern Sie die zu ersetzende Zeichenfolge entsprechend der übereinstimmenden Zeichenfolge, indem Sie sie durch den regulären Python-Ausdruck ersetzen

Umgebung

Validiert mit Python 3.5.2.

Nutzungsszene

Wenn Sie beim Ersetzen durch einen regulären Ausdruck die zu ersetzende Zeichenfolge entsprechend der übereinstimmenden Zeichenfolge ändern möchten

Als Beispiel können Sie Folgendes tun.

(Ich denke, es ist möglich, eine kompliziertere Verarbeitung als das obige Beispiel durchzuführen.)

Methode

Verwenden Sie "re.sub ()", das zum Ersetzen durch normale reguläre Ausdrücke verwendet wird, und eine Funktion, die die Verarbeitung implementiert, die Sie auf die übereinstimmende Zeichenfolge anwenden möchten.

Insbesondere ist es "re (Muster, Funktion, zu durchsuchende Zeichenfolge)". Wenn das Argument der oben aufgerufenen Funktion matchobj lautet, können Sie die Zeichenfolge verwenden, die dem Muster entspricht, indem Sie matchobj.group (0) in der Funktion festlegen.

def replace(matchobj):
    s = matchobj.group(0)
    #Was willst du tun

re.sub(`hoge`, replace, "sampletext")

Implementierungsbeispiel

Im folgenden Beispiel werden die Funktion "toKansuji ()", die Zahlen in chinesische Zahlen konvertiert, und die Funktion "fixTax ()", die die Verbrauchsteuer von 5% auf 8% ändert, in re () vorbereitet und abgeglichen. Es wird durch das Ergebnis der Anwendung der obigen Funktion auf die Nummer ersetzt.

Code

sample.py


import re

def toKansuji(matchobj):
    a = ["einer", "Zehntausend", "Milliarde", "Billion", "Kyo"]
    b = ["einer", "Zehn", "hundert", "tausend"]
    c = ("", "einer", "zwei", "drei", "vier", "Fünf", "Sechs", "Sieben", "Acht", "Neun")
    s = matchobj.group(0)
    l = [int(i) for i in s]
    result = ""
    length = len(l)
    for i in range(length):
        n = l[length-1-i]
        if i%4 == 0 and i//4 > 0: 
            az = 1
            for j in range(4):
                if l[length-1-i-j] != 0: az = 0
            if az == 0: result = a[i//4] + result
        if n != 0:
            if i%4 != 0:
                result = b[i%4] + result
                if n != 1: result = c[n] + result
            else:
                result = c[n] + result
    return result

def fixTax(matchobj):
    d = int(matchobj.group(0))
    d = int(d / 1.05 * 1.08)
    return str(d)

if __name__ == '__main__':
    s1 = "315 Yen inklusive Steuern"
    print("Verbrauchssteuer 5%:", s1)
    print("Verbrauchssteuer 8%:", re.sub('\d+', fixTax, s1))

    s2 = "IPv4 ist 4294967296"
    print("Zahlen:", s2)
    print("Chinesische Ziffer:", re.sub('\d{2,}', toKansuji, s2))

Ausführungsergebnis

Verbrauchssteuer 5%:315 Yen inklusive Steuern
Verbrauchssteuer 8%:324 Yen inklusive Steuern
Zahlen:IPv4 ist 4294967296
Chinesische Ziffer:IPv4 ist 492.494.967.296

Die beiden oberen Zeilen ersetzen die Verbrauchssteuer von 5% auf 8%, und die beiden unteren Zeilen ersetzen die Zahlen durch chinesische Zahlen.

Andere

Wenn Sie mit () im Muster gruppieren, können Sie auch die übereinstimmende Zeichenfolge in dieser Gruppe verwenden, indem Sie in der Funktion matchobj.group (n) festlegen.

(Da beide diesmal vorbereiteten Funktionen für die Funktionsprüfung vorbereitet sind, geben sie möglicherweise nicht für alle Eingaben genaue Werte zurück.)

Referenz

https://docs.python.jp/3/library/re.html

Recommended Posts

Ändern Sie die zu ersetzende Zeichenfolge entsprechend der übereinstimmenden Zeichenfolge, indem Sie sie durch den regulären Python-Ausdruck ersetzen
Holen Sie sich die passende Zeichenfolge in den regulären Ausdruck und verwenden Sie sie beim Ersetzen unter Python3 erneut
String-Ersetzung durch regulären Python-Ausdruck
[Ruby] Wie ersetze ich nur einen Teil der Zeichenkette, der mit dem regulären Ausdruck übereinstimmt?
Ab Python 3.10 scheint das von inspect.signature () zurückgegebene Formular auf typing.get_type_hints () zu basieren.
Manipulation regulärer Ausdrücke durch Python
Bestimmen Sie, ob die Zeichenfolge Zeit mit einem regulären Python-Ausdruck ist
So wechseln Sie die Konfigurationsdatei, die von Python gelesen werden soll
[Einführung in Python] So teilen Sie eine Zeichenfolge mit der Funktion split
[Python] Eine Funktion, die die gesamte Zeichenfolge mit einem regulären Ausdruck durchsucht und alle übereinstimmenden Zeichenfolgen abruft.
Stellen Sie sicher, dass Python eine Zeichenfolge in int konvertieren / konvertieren kann
[Python] Ändere das Alphabet in eine Zahl
[Einführung in Python] So schreiben Sie eine Zeichenfolge mit der Formatierungsfunktion
Es wurde ein Fehler behoben, bei dem node.surface mit python3 + mecab nicht abgerufen werden konnte
Ändern Sie die Python 64-Bit-Umgebung mit Anaconda in eine 32-Bit-Umgebung
Der Weg zum Kompilieren zu Python 3 mit Thrift
Was Sie sich mit der grundlegenden Grammatik "String Manipulation" von Python merken möchten
Python-Konstanten wie None (laut Referenz)
[Python] So ändern Sie das Datumsformat (Anzeigeformat)
Der einfachste Weg, um Stimme mit Python zu synthetisieren
Versuchen Sie, das Mensch-Maschine-Diagramm mit Python zu lösen
Geben Sie die ausführbare Python-Datei an, die mit virtualenv verwendet werden soll
Begrüßen Sie die Welt mit Python mit IntelliJ
Der einfachste Weg, OpenCV mit Python zu verwenden
So löschen Sie die von Python ausgegebenen Zeichen
Einführung in Python mit Atom (unterwegs)
Verwenden Sie tkinter, um den Ausgabecode in Python als "A und vorgeben, B zu sein" zu verschieben
Ich habe versucht, automatisch die Zeichenfolge zu generieren, die mit Python in Mr. Adjustment eingegeben werden soll
Bestimmen Sie, ob das Mitglied nur mit dem Operator oder auf die Standardzeichenfolge gesetzt werden soll
Versuchen Sie, mit Python eine Wellenform (Audiospektrum) zu erstellen, die sich entsprechend dem Klang bewegt
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen
So löschen Sie die angegebene Zeichenfolge mit dem Befehl sed! !! !!
[Einführung in Python] Wie iteriere ich mit der Bereichsfunktion?
0 Konvertieren Sie nicht ausgefülltes Datum in Datums- / Uhrzeittyp mit regulärem Ausdruck
Versuchen Sie, das Problem der Zuweisung von Schulungsärzten mit Python zu lösen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ändern Sie die IP-Einstellungen mit Python in ACL von conoha
Zerstören Sie den Zwischenausdruck der Sweep-Methode mit Python
Ändern Sie die Bewegung, indem Sie das Kombinationsfeld mit tkinter ändern
Ich habe versucht, Soma Cube mit Python zu lösen
[Python] So legen Sie den Download-Speicherort mit youtube-dl fest
Lesen Sie die XML-Datei anhand des Python-Tutorials
Konvertieren Sie das Bild in .zip mit Python in PDF
Ich möchte mit Python-Datenklasse nach hinten erben
Verschieben Sie die Alphabetzeichenfolge in Python um N Zeichen
Geben Sie MinGW als den in Python verwendeten Compiler an
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
[Python] So schreiben Sie den Tabellenstil mit python-pptx um [python-pptx]
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe eine Klasse erstellt, um das Analyseergebnis von MeCab in ndarray mit Python zu erhalten
Berechnung der Weltraumhintergrund-Röntgenstrahlung (CXB) mit Python durch Angabe des Flussbereichs
Versuchen Sie, in die Datenbank zu importieren, indem Sie ShapeFile mit numerischen Informationen zum nationalen Land mit Python bearbeiten