2016-04-11 15 views
2

Ich versuche einen WhatsApp-Chat-Text in einzelne Wörter zu teilen, aber ich weiß nicht, wie man den Unicode der Emojis als zusätzliche Trennzeichen verwendet.Python: Text mit Emojis als Trennzeichen teilen

Nach http://unicode.org/emoji/charts/full-emoji-list.html wäre ein Beispiel Unicode U + 1F602. Ich habe Folgendes versucht, aber es funktioniert nicht.

text = file.read() 
delimiters = " ", "..", "\"", "<", ">", "/", u"U+1F602" 
regexPattern = '|'.join(map(re.escape, delimiters)) 
list = re.split(regexPattern, text) 
+0

Welche Python-Version? Definieren funktioniert nicht. Hier (python2.7.11 +) funktionierte dieses Snippet (https://gist.github.com/lauromoura/f46442e25d1e08519af4aaef972cad3b) gut und teilte alle Buchstaben auf. Vielleicht etwas im Zusammenhang mit der Eingabezeichenfolge? –

+0

ok, ich benutze Python 2.7.10, vielleicht deshalb funktioniert es nicht. – Philip94

+0

Ich versuche es zu beheben – Philip94

Antwort

1

u"U+1F602" ist kein Unicode-Zeichen, versuchen Sie es drucken, was bedeutete Sie unichr(0x1f602) war

2

Die wörtliche für eine Nicht-BMP Unicode-Zeichen nicht u"U+1F602" ist, ist es u"\U0001F602" in Python.

Obwohl (allein) ist es nicht genug, um die Regex zu beheben. Übergeben Sie flags=re.UNICODE zu re.split(). Stellen Sie sicher, dass type(text)unicode ist.

Ich versuche, einen WhatsApp Chat-Text in einzelne Wörter

Sie words = re.findall(ur"\w+", text, flags=re.UNICODE) könnten versuchen, zu spalten. Im Allgemeinen kann die Art und Weise, in der ein Text in Teile aufgeteilt werden kann, vom Kontext abhängen, siehe z. B. how nltk.tokenize.TweetTokenizer is implemented.

Verwandte Themen