Python regex für Großbuchstaben mit Unicode

8

Ich habe eine Reihe von Wörtern in verschiedenen Sprachen (Englisch, Polnisch, Finnisch, Russisch usw.) und muss überprüfen, was von ihnen mit einem Großbuchstaben geschrieben wird.

Ich habe versucht, einen einfachen regulären Ausdruck zu verwenden: ^[A-Z] , aber es passt nur zu lateinischen Buchstaben, dann habe ich die russischen Großbuchstaben hinzugefügt: ^[A-ZА-Я] .

Aber viele Unicode-Buchstaben mit diakritischen Zeichen bleiben erhalten. Wie kann ich meinem Regex alle Großbuchstaben hinzufügen?

Es ist möglich, dies ohne Aufzählungen von Symbolen zu machen?

P.S. Ich weiß, wie man das in Ruby macht, aber jetzt benutze ich Python.

    
VeLKerr 23.03.2016, 19:45
quelle

5 Antworten

3

Wenn Sie eine Regex verwenden müssen, haben Sie zwei Möglichkeiten:

  • Installieren Sie das Modul PyPi regex und verwenden Sie \p{Lu} class
  • Verwenden Sie re mit einer Zeichenklasse mit allen Großbuchstabenbereichen (entlehnt von XRegExp Bibliothek und etwas angepasst)

Hier ist eine Lösung mit einer Regex, die alle Großbuchstaben enthält:

%Vor%

Sehen Sie sich die IDEONE-Demo

an

Mit PyPi Regex-Modul ist es einfacher:

%Vor%

In Python 2.x sollten Sie Folgendes verwenden:

%Vor%

oder

%Vor%     
Wiktor Stribiżew 23.03.2016, 20:35
quelle
2
%Vor%

Fügen Sie der Liste alle Unicode-Buchstaben hinzu, die nicht im Bereich A-Z liegen. Ich habe nur die deutschen Umlaute hinzugefügt.

Sie können alle Nicht-ASCII-Buchstaben (A-Z) wie folgt finden:

%Vor%

Jetzt müssen Sie herausfinden, welche Hauptstädte sind.

    
Oz123 23.03.2016 19:58
quelle
2

re sieht aus wie masochizm, wenn Sie einfach word[0].isupper() überprüfen können.

%Vor%     
GingerPlusPlus 26.03.2016 15:29
quelle
2

Sie können die Zeichenfolge mit der großgeschriebenen Version vergleichen, um festzustellen, ob sie großgeschrieben ist oder nicht:

%Vor%

Beachten Sie, dass Sie in Python2 Unicode-Strings verwenden müssen, damit es korrekt funktioniert.

    
GingerPlusPlus 23.03.2016 20:13
quelle
0

Sie sollten \W und \w versuchen:

Beispiel in pythex.org

    
Till 23.03.2016 20:20
quelle