2016-05-05 17 views
-2

Ich ziehe Tweets in Python mit Hilfe von Tweepy. Es gibt die gesamten Daten im Typ Unicode. ZB: Druckart (Daten) gibt mir <type 'unicode'>Entfernen Unicode Zeichen Python

Es enthält Unicode-Zeichen in ihm. ZB: hello\u2026 im am fine\u2019s

Ich möchte alle diese Unicode-Zeichen entfernen. Gibt es einen regulären Ausdruck, den ich benutzen kann? str.replace ist keine praktikable Option, da Unicode-Zeichen beliebige Werte annehmen können, von Smileys bis zu Unicode-Apostrophen.

+1

Alle Texte sind Unicode. Meinst du * Nicht-ASCII-Zeichen * vielleicht? –

+0

Ja nicht ASCII-Zeichen. Es ist normaler Text in Englisch, der mit \ u2026 usw. durchsetzt ist. – ashish1512

Antwort

0
In [10]: from unicodedata import normalize 

In [11]: out_text = normalize('NFKD', input_text).encode('ascii','ignore') 

Versuchen Sie dies.

bearbeiten

normalisieren Eigentlich für die Unicode-String UNISTR die normale Form Form zurück. Gültige Werte für das Formular sind "NFC", "NFKC", "NFD" und "NFKD". Wenn Sie mehr über NFKD wana link

In [12]: u = unichr(40960) + u'abcd' + unichr(1972) 
In [13]: u.encode('utf-8') 
Out[13]: '\xea\x80\x80abcd\xde\xb4' 
In [14]: u 
Out[14]: u'\ua000abcd\u07b4' 
In [16]: u.encode('ascii', 'ignore') 
Out[16]: 'abcd' 

Aus dem obigen Code zu diesem gehen Sie bekommen, was encode('ascii','ignore') tut.

Ref: https://docs.python.org/2/library/unicodedata.html#unicodedata.normalize

+0

data = {"text": "RT @ peddoc63: Sieht so aus als ob Trumps Anti-Establishment- und Selbstfinanzierungstage vorbei sind. Nun, das dauerte weniger als 12 Stunden \ ud83d \ ude44 https : \/\/t.co \/W7zaUK8 \ u2026 "} Oben ist ein Beispiel. Wenn ich tun out_text = normalisieren ('NFKD', Daten) .encode ('ascii', 'ignorieren') Es gibt mir Fehler 'ascii' Codec kann in Position nicht kodieren Zeichen 119-120 – ashish1512

+0

@ ashish1512: Warum übergibst du ein ganzes Wörterbuch in 'normalize()'? –

+0

Es ist nicht genau ein Wörterbuch. Wenn ich Typ (Daten) drucke, gibt es mir ashish1512