Es gibt verschiedene Schwierigkeiten beim Umgang mit Unicode. Ich habe in letzter Zeit viel gelernt. Daher können Unicode-Anfänger im Folgenden schreckliche Fehler machen:
Ich wusste um die verwirrenden Punkte der Unicode-Normalisierungsunterschiede (NFC, NFD, NFKC, NFKD), In einer anderen Ebene scheint es beim visuellen Zählen von thailändischen Zeichen, arabischen Zeichen, Devanagari-Zeichen usw. notwendig zu sein, in einer höheren Ebene namens Grapheme zu zählen.
Referenz: 7 Möglichkeiten, die Anzahl der Zeichen zu zählen
Grapheme
Mit anderen Worten
Es scheint.
Welche Tools hat Python zum Zählen von Grapheme-Clustern? Es schien nicht in Unicodedata, der Standard-Python-Bibliothek, enthalten zu sein.
Es scheint ein Paket namens [uniseg] zu geben (https://pypi.python.org/pypi/uniseg/).
Dieser Artikel zeigt hauptsächlich ein Beispiel in Python 3. (Ich werde nicht auf die Unterschiede eingehen, wie Unicode, Str und Bytes zwischen Python 2 und Python 3 behandelt werden.
$ pip install uniseg
>>> import uniseg.graphemecluster
>>> graphme_split = lambda w: tuple(uniseg.graphemecluster.grapheme_clusters(w))
>>>
>>> phrase = 'กินข้าวเย็น' #Es scheint ein Satz zu sein, der bedeutet, auf Thai zu Abend zu essen
>>> len(phrase.encode('UTF-8')) # UTF-Bytes bei 8
33
>>> len(phrase) # Code Points
11
>>> len(graphme_split(phrase)) # Graphme clusters
8
Und so weiter.
uniseg scheint eine wort- oder satzbasierte Unterteilung zu haben. Es scheint, dass es mit Leerzeichen geschnitten werden kann, so dass es nicht möglich ist, auf Japanisch zu schreiben, was ein klebriges Wort ist.
Recommended Posts