Python regulärer Ausdruck mit utf8 Problem

8

Ich habe eine Datei, die viele Zeilen einfachen utf-8-Textes enthält. Wie unten, nebenbei, es ist Chinesisch.

%Vor%

Die Datei selbst wurde im UTF-8-Format gespeichert. Dateiname ist xx.txt

Hier ist mein Python-Code, env ist python2.7

%Vor%

Das Problem ist, dass ich keine Ergebnisse habe.

Ich möchte die Dezimalzeichenfolge von 交易金额:0.01元 erhalten, hier ist 0.01 .

Warum funktioniert dieser Code nicht? Kann mir jemand das erklären, ich habe überhaupt keine Ahnung.

    
castiel 11.05.2012, 06:25
quelle

3 Antworten

18

Es gibt mehrere Probleme mit Ihrem Code. Zuerst sollten Sie re.compile(ur'<unicode string>') verwenden. Es ist auch schön, ein re.UNICODE-Flag hinzuzufügen (nicht sicher, ob es wirklich benötigt wird). Der Nächste ist, dass Sie immer noch keine Übereinstimmung erhalten, da \d+ keine Dezimalzahlen behandelt, sondern nur eine Reihe von Zahlen, Sie sollten stattdessen \d+\.?\d+ verwenden (Sie wollen eine Zahl, wahrscheinlich einen Punkt und eine Zahl). Beispielcode:

%Vor%     
uhz 11.05.2012, 06:45
quelle
3

Sie müssen .search() verwenden, da .match() ist, als würde man die Regex mit ^ starten, dh es wird nur am Anfang der Zeichenfolge überprüft.

    
ThiefMaster 11.05.2012 06:27
quelle
0

Wenn Sie utf-8 verwenden, können Sie flags = re.LOCALE

verwenden %Vor%

Weitere Details finden Sie unter re.LOCALE . Es ist nicht notwendig, utf-8 in Unicode zu konvertieren.

    
Cathy Lin 31.10.2016 10:22
quelle

Tags und Links