Wie Konto für die Akzent-Zeichen für regulären Ausdruck in Python?
Derzeit nutze ich wieder.findall zu finden und zu isolieren, Wörter nach dem ' # ' - Zeichen für die hash-tags in einem string:
hashtags = re.findall(r'#([A-Za-z0-9_]+)', str1)
Er sucht str1 und sucht nach allen den hashtags. Dies funktioniert aber nicht Konto für akzentuierte Zeichen wie diese zum Beispiel: áéíóúñü¿
.
Wenn eines dieser Zeichen in str1, wird es sparen Sie den hashtag bis die Buchstaben vor. So zum Beispiel #yogenfrüz
wäre #yogenfr
.
Ich muss in der Lage sein Konto für alle akzentuierte Buchstaben, die im Bereich von Deutsch, Niederländisch, Französisch und Spanisch, so dass ich sparen können hashtags wie #yogenfrüz
Wie kann ich über das tun dies
- Verwenden
re.UNICODE
Flagge. - das UNICODE-flag wird nicht machen Sie den Bereich, die passen nicht-ASCII-Zeichen, keine. Wenn Sie sagen, regex übereinstimmen
a-z
ist, nimmt es die wörtliche Angebot, und nicht die menschliche Auslegung, diea
undá
irgendwie sind die gleiche Sache. - also, was wird es tun? 😉
- siehe die Antworten unten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie Folgendes:
Regex101 Demo
BEARBEITEN
Prüfen Sie die nützlichen Kommentar unten von Martijn Pieters.
\w
übereinstimmen, werden nicht kombiniert codepoints, alsoa
und U+0301 COMBINING ACUTE ACCENT nicht abgestimmt werden, auch wenn dasá
. Möchten Sie vielleicht, um die Normalisierung zu NFC, ersten.Können Sie auch verwenden möchten
wie konvertiere ich alle diese escape-Zeichen in Ihre entsprechenden Zeichen wie wenn es eine unicode-à,, wie wandle ich das in einen standard ein?
Angenommen, Sie haben geladen, Ihr unicode in eine variable namens my_unicode... die Normalisierung à in a ist diese einfache...
import unicodedata
Ausgabe = unicodedata.normalisieren('NFD', my_unicode).encode('ascii', 'ignore')
Explizite Beispiel...
überprüfen Sie diese Antwort es hat mir sehr geholfen: Wie konvertieren von unicode-Zeichen mit Akzent, um reinen ascii-Text ohne Akzente?