Einmal fand ich Diese Frage ist interessant.
Heute habe ich beschlossen, mit dem Text dieses Buches herumzuspielen.
Ich möchte den regulären Ausdruck in diesem Skript verwenden. Wenn ich das Skript für kyrillischen Text verwende, löscht es alle kyrillischen Zeichen und lässt nur Satzzeichen und Leerzeichen zurück.
%Vor%Etwas sehr Ähnliches wurde bereits in dieser Antwort gemacht.
Grundsätzlich möchte ich nur eine Reihe von Zeichen angeben können, die nicht alphabetisch, alphanumerisch oder Satzzeichen oder Leerzeichen sind.
Dies beantwortet nicht genau Ihre Frage, aber das Modul regex
hat viel viel bessere Unicode-Unterstützung als das eingebaute re
-Modul. z.B. regex
unterstützt die Eigenschaft \p{Cyrillic}
und ihre Negation \P{Cyrillic}
(sowie eine große Anzahl von andere Unicode-Eigenschaften ). Außerdem behandelt Unicode Groß- und Kleinschreibung korrekt.
Sie können den Unicode-Bereich ziemlich einfach angeben: \u0400-\u0500
. Siehe auch hier .
Hier ist ein Beispiel mit einem Text aus der russischen Wikipedia und einem Satz aus der englischen Wikipedia, der ein einzelnes Wort in kyrillischer Schrift enthält.
%Vor%Ausgabe:
%Vor%Zwei andere Wege, die auch funktionieren sollten, und zwar etwas weniger hackisch als die Angabe eines Unicode-Bereichs:
re.findall("(?u)\w+", text)
sollte sowohl kyrillische als auch lateinische Zeichen enthalten. re.findall("\w+", text, re.UNICODE)
ist äquivalent Also, genauer gesagt für Ihr Problem:
* re.compile('[^\s\w.,?!:;-], re.UNICODE')
sollte den Trick machen.
Siehe hier (Punkt 7)
Aus praktischen Gründen schlage ich vor, die exakte moderne russische Untergruppe von Glyphen anstelle von allgemein kyrillisch zu verwenden. Dies liegt daran, dass russische Websites niemals die vollständige kyrillische Untergruppe verwenden, die belarussische, ukrainische, slawische und mazedonische Glyphen enthält. Aus historischen Gründen halte ich "u \ 0463".
// Basic Cyr Unicode-Bereich für die Verwendung auf russischen Websites. 0401,0406,0410,0411,0412,0413,0414,0415,0416,0417,0418,0419,041A, 041B, 041C, 041D, 041E, 041F, 0420,0421,0422,0423,0424,0425,0426, 0427,0428,0429,042A, 042B, 042C, 042D, 042E, 042F, 0430,0431,0432,0433,0434,0435,0436,0437,0438,0439,043A, 043B, 043C, 043D, 043E, 043F, 0440,0441,0442,0443,0444,0445,0446,0447,0448,0449,044A, 044B, 044C, 044D, 044E, 044F, 0451,0462,0463
Wenn Sie diese Teilmenge auf einer mehrsprachigen Website verwenden, sparen Sie 60% der Bandbreite im Vergleich zur Verwendung des gesamten Originalbereichs und erhöhen die Ladegeschwindigkeit entsprechend.
Tags und Links regex unicode python-3.x