Angesichts eines Unicode-Zeichens, was wäre die einfachste Möglichkeit, seine script zurückgeben (wie "Latin", "Hangul" usw.)? unicodedata scheint diese Art von Funktion nicht zu bieten.Finden Sie das Unicode-Skript eines Zeichens
Antwort
Ich hatte gehofft, jemand hat es vorher getan, aber anscheinend nicht, also hier ist, was ich am Ende bin. Das folgende Modul (ich nenne es) erweitert unicodedata
und bietet script_cat(chr)
, die ein Tupel (Skriptname, Caterogy) für ein Unicode-Zeichen zurückgibt. Beispiel:
# coding=utf8
import unicodedata2
print unicodedata2.script_cat(u'Ф') #('Cyrillic', 'L')
print unicodedata2.script_cat(u'の') #('Hiragana', 'Lo')
print unicodedata2.script_cat(u'★') #('Common', 'So')
Das Modul: https://gist.github.com/2204527
Bravo! Herzlichen Dank für ein Selbstakzept, denke ich. – Marcin
@EOL: nur aus Neugier, was ist der Sinn Ihrer Bearbeitung? Ich bin kein Emacs-Benutzer, also bin ich mir nicht sicher, wozu diese '- * -' gut sind. – georg
@ thg435: Gute Frage: Ich dachte, dass die '- * - 'Syntax eine allgemeine Python-Konvention war, aber dann überprüfte ich PEP 263 und stellte fest, dass das nicht der Fall war. :) Ich habe die Änderung größtenteils rückgängig gemacht (die neue Version spiegelt jedoch PEP 263 besser wieder). Ich habe ein Leerzeichen vor der Kommentarmarke '#' gesetzt, um der PEP 8-Konvention "mindestens zwei Leerzeichen" zu folgen (Referenz: http://www.python.org/dev/peps/pep-0008/#inline-). Bemerkungen). – EOL
Die einzige Möglichkeit, die ich kenne, ist leider, den Unicode-Codepunkt mit ord()
zu erhalten und dann Ihre eigene Tabelle zu verwenden (mit http://en.wikipedia.org/wiki/Unicode#Standardized_subsets und mehr). Eine vorläufige Umwandlung in eine normale Form kann angebracht sein, um der Tatsache Rechnung zu tragen, dass ein einzelnes "geschriebenes" Zeichen mit verschiedenen Sequenzen von Codepunkten ausgedrückt werden kann (das Unicode-Modul hilft hier).
Sie können ord
verwenden, um den numerischen Wert eines Zeichens abzurufen (es funktioniert sowohl mit Unicode- als auch mit Bytezeichenfolgen der Länge 1).
Im nächsten Schritt werden Sie dann leider mit den Bereichen testen. Möglicherweise helfen die Daten hier: http://cldr.unicode.org/index/downloads
Es scheint mir, dass das Python UnicodeData Modul Werkzeuge für den Zugriff auf die Hauptdatei in der Unicode-Datenbank aber nichts für die anderen Dateien enthält: "Die Daten in dieser Datenbank basieren auf Die Datei UnicodeData.txt "
Die Skriptinformationen befinden sich in der Datei Scripts.txt. Es ist von relativ einfachem Format (beschrieben in UAX #44) und nicht schrecklich groß (131 Kilobyte), also könnten Sie es in Ihrem Programm analysieren. Beachten Sie, dass es in der Unicode-Klassifizierung das Skript "Common" gibt, das Zeichen enthält, die in verschiedenen Skripts verwendet werden, wie Satzzeichen.
- 1. Finden Sie alle bis auf das erste Vorkommen eines Zeichens mit REGEX
- 2. Scala: Entfernen Sie das letzte Vorkommen eines Zeichens
- 3. Den umgebenden Satz eines Zeichens/Wortes in einer Zeichenkette finden
- 4. Den Unicode Codepoint eines Zeichens in GNU Emacs finden
- 5. Finden Sie die Position des Zeichens in einem Teilstring
- 6. Preprocessor stringificaton eines Zeichens
- 7. So finden Sie das Hauptthema eines Textkörpers
- 8. Einfügen eines Zeichens als Token
- 9. Suchen eines bestimmten Zeichens in SQL-Anweisung
- 10. PHP Verwendung von Unicode eines Zeichens
- 11. Finden Sie die genauen Koordinaten eines einzelnen Zeichens in einem TextView
- 12. Laufzeitausnahme beim Drucken eines Unicode-Zeichens
- 13. Konvertieren eines Zeichens in keycode
- 14. Überprüfen eines Zeichens als Newline
- 15. Zeiger eines Zeichens in C++
- 16. Javascript: das Finden eines Funktionscodes
- 17. Löschen des Bildschirms durch Drucken eines Zeichens?
- 18. Finde das letzte Vorkommen eines Zeichens in der Zeichenkette Python
- 19. Versuchen, das erste Vorkommen eines Zeichens mit Javascript/Angular
- 20. So ersetzen Sie das Auftreten eines Zeichens in einer Zeichenfolge mit Ausnahme der ersten
- 21. Unicode-Block eines Zeichens in Python
- 22. Das Ziel eines Elements finden
- 23. finden String eines Arrays, das
- 24. Binärdarstellung eines Zeichens in C drucken
- 25. Einfügen eines Zeichens vor jeder Instanz eines bestimmten Zeichens in vi
- 26. Ersetzen Sie alle Instanzen eines Zeichens in mehreren Elementen
- 27. Suchen und Ersetzen eines nicht druckbaren Zeichens
- 28. Regex: bis zum ersten Auftreten eines Zeichens
- 29. So finden Sie das erste Zeichen in einer C++ - Zeichenfolge
- 30. Anzahl der Vorkommen eines Zeichens in NSString
Was meinst du mit "script Wert"? –
Siehe http://stackoverflow.com/questions/436220/python-is-there-a-way-to-determine-the-coding-of-text-file. Der Link sagt, dass das korrekte Erkennen der Codierung immer unmöglich ist. –
@DanielRoseman: http://en.wikipedia.org/wiki/Script_%28Unicode%29 – georg