entfernen emojis aus einem string in Python
Fand ich diesen code in Python für das entfernen von emojis, aber es funktioniert nicht. Können Sie helfen mit anderen codes oder fix?
Habe ich beobachtet, dass alle meine emjois start mit \xf
aber wenn ich versuche zu suchen str.startswith("\xf")
ich bekomme ungültiges Zeichen Fehler.
emoji_pattern = r'/[x{1F601}-x{1F64F}]/u'
re.sub(emoji_pattern, '', word)
Hier der Fehler:
Traceback (most recent call last):
File "test.py", line 52, in <module>
re.sub(emoji_pattern,'',word)
File "/usr/lib/python2.7/re.py", line 151, in sub
return _compile(pattern, flags).sub(repl, string, count)
File "/usr/lib/python2.7/re.py", line 244, in _compile
raise error, v # invalid expression
sre_constants.error: bad character range
Jedes der Elemente in einer Liste kann ein Wort ['This', 'dog', '\xf0\x9f\x98\x82', 'https://t.co/5N86jYipOI']
UPDATE:
Ich habe diese anderen code:
emoji_pattern=re.compile(ur" " " [\U0001F600-\U0001F64F] # emoticons \
|\
[\U0001F300-\U0001F5FF] # symbols & pictographs\
|\
[\U0001F680-\U0001F6FF] # transport & map symbols\
|\
[\U0001F1E0-\U0001F1FF] # flags (iOS)\
" " ", re.VERBOSE)
emoji_pattern.sub('', word)
Aber diese immer noch nicht entfernen Sie die emojis-und zeigt Sie Ihnen! Keine Ahnung, warum das so ist?
post alle Ihre codes, oder zeige den Inhalt
Hinzugefügt das Wort
Emoji-Zeichen sind nicht nur auf einen einzigen Bereich (siehe dieser Liste von Zeichen).
Ihre emojis nicht mit
Verwandte: entfernen, unicode-emoji mit re in python
word
Hinzugefügt das Wort
Emoji-Zeichen sind nicht nur auf einen einzigen Bereich (siehe dieser Liste von Zeichen).
Ihre emojis nicht mit
\xf
. Sie sind wahrscheinlich zu sehen die bytes, die die Zeichenfolge im UTF-8, und das erste byte ist 0xf0
.Verwandte: entfernen, unicode-emoji mit re in python
InformationsquelleAutor Mona Jalal | 2015-10-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Auf Python 2 haben, müssen Sie auf
u''
literal zum erstellen einer Unicode-Zeichenfolge. Außerdem sollten Sie passre.UNICODE
Flagge und konvertieren der Eingangs-Daten in Unicode (z.B.text = data.decode('utf-8')
):- Ausgang
Hinweis:
emoji_pattern
matches nur einige emoji (nicht alle). Sehen Die Charaktere sind Emoji..decode()
wandelt ein bytestring in Unicode-string. Sollten Sie lieber Unicode-Zeichenfolgen während der Arbeit mit text (type(text) == unicode
auf Python 2)href="http://stackoverflow.com/q/9773121/4279">Entfernen u in der Liste
Linux nutzt eine große python2 bauen standardmäßig und deshalb den code in die Antwort sollte funktionieren, da ist es. Müssen Sie möglicherweise try/except nur auf einem schmalen python2 bauen z.B. unter Windows (Man konnte update für Python 3, zu vermeiden, denken über schmal/breit baut-den code in der Antwort funktioniert auf Python 3 zu).
Bearbeiten Sie Ihre Frage und stellen die notwendigen Informationen gibt. Versuchen Sie, beschränken Sie Ihre Fragen auf ein einziges Thema, so dass die Frage könnte nützlich sein, um jemand anderes zu werden (Sie hatte "sre_constants.Fehler: schlechtes character-range"auf - Problem, das ist erklärt in Bryan Oakley die Antwort, ich habe Ihnen gezeigt, wie Sie richtig schreiben
emoji_pattern
ohne "ur" ""... \ " (ich habe nicht versucht zu finden gültig emoji-Bereiche). Leider, weder direkt beantworten die Frage im Titel Ihrer Frage. Auch, nicht Kodieren bytesEs hat nicht funktioniert auf
เบอร์10!! ส้มสวย 01แฝดของ08 พร้อมส่ง!??
string\xF0\x9F\x92\x8B\xF0\x9F
InformationsquelleAutor jfs
Wenn Sie das Beispiel aus der akzeptierten Antworten und noch immer "bad character-range" - Fehler, dann bist du wahrscheinlich mit einem schmalen Aufbau (Lesen Sie diese Antwort für mehr details). Eine überarbeitete version der regex, die zu funktionieren scheint ist:
InformationsquelleAutor scwagner
Komplette vesrion entfernen emojies:
Es ist nicht eine perfekte Lösung, da die Unicode-9.0 emoji sind nicht im Modell enthalten. Noch sind diejenigen, für die Unicode-10.0 oder 11.0. Sie müssen nur halten Sie die Aktualisierung der Muster.
siehe meine Antwort unten!
das ist kein guter Ansatz. Siehe meine eine neue Antwort von mir, stützt sich auf eine 3rd-party-Bibliothek zur Aktualisierung regexes.
InformationsquelleAutor Ali Tavakoli
Akzeptierte Antwort, und andere für mich gearbeitet, für ein bisschen, aber ich schließlich beschlossen, um Streifen alle Zeichen außerhalb des Basic Multilingual Plane. Dies schließt künftige Ergänzungen zu anderen Unicode-Ebenen (wo die emoji ' s und solche live), was bedeutet, dass ich nicht aktualisieren müssen, mein code jedes mal neue Unicode-Zeichen sind Hinzugefügt :).
In Python 2.7 auf unicode umstellen, wenn Ihr text nicht bereits, und verwenden Sie dann die negative regex unten (subs etwas nicht in regex, der alle Zeichen aus der BMP außer für Surrogate, die verwendet werden, zu erstellen 2 byte Ergänzende Mehrsprachige Ebene Zeichen).
InformationsquelleAutor KevinTydlacka
Weil
[...]
bedeutet eine beliebige Reihe von Zeichen, und weil zwei Charaktere in einer Gruppe, getrennt durch einen Bindestrich bedeutet eine Reihe von Zeichen (oft "a-z" oder "0-9"), dein Muster sagt "ein Schrägstrich, gefolgt von einem beliebigen Zeichen in der Gruppe, x, {, 1, F, 6, 0, 1, Bereich } durch x, {, 1, F, 6, 4, f-oder }"gefolgt von einem Schrägstrich und den Buchstaben "u". Dass Bereich in der Mitte ist das, was neu ist, ruft der schlechte Charakter-Bereich.InformationsquelleAutor Bryan Oakley
dies ist meine Lösung. Diese Lösung entfernt zusätzliche, Mann und Frau, emoji, die kippe renered von python ?♂ und ?♀
InformationsquelleAutor KT Works
Dies funktioniert für mich. Es ist motiviert durch https://stackoverflow.com/a/43813727/6579239
inputString.encode('ascii', 'ignore').decode('ascii')
und mit ihm getan werden, in einem einzigen Schritt?) . Es gibt mehr zu den größeren Unicode-standard als nur Emoji, können Sie nicht nur Streifen, Latein, Griechisch, Hangul, Myanmar, tibetanische, ägyptische oder jede andere von Unicode unterstützte Skripts einfach zu entfernen, die Emoji -.InformationsquelleAutor Abdul-Razak Adam
Versucht, all die Antworten, leider hat Sie nicht entfernen Sie das neue umarmen Gesicht emoji ? oder des Anstoßens emoji ?oder ?, ?und vieles mehr.
Endete mit einer Liste aller möglichen emoji, stammt aus der python-emoji-Paket auf github, und ich hatte zum erstellen eines gist, weil es eine 30k-Zeichen-Grenze auf stackoverflow Antworten und es ist über 70k Zeichen.
Hier ist die Liste
TypeError: compile() got multiple values for argument 'flags'
auf Python ist3entfernen Sie einfach die extra -", " und es wird funktionieren.
InformationsquelleAutor octohedron
Wenn Sie nicht scharf auf mit regex, die beste Lösung sein könnte, mit dem emoji-python-Paket.
Hier ist eine einfache Funktion, um zurückzukehren emoji free text (vielen Dank an dieser SO beantworten):
Wenn Sie sind den Umgang mit strings mit emojis, das ist einfach
Wenn Sie sind den Umgang mit unicode-Zeichen (wie in dem Beispiel von @jfs), einfach codieren Sie es mit utf-8.
emoji.get_emoji_regexp().sub(r'', text.decode('utf8'))
und mit ihm getan werden. Nicht nur die Iteration über alle Zeichen eins nach dem anderen, das ist.. sehr ineffizient.InformationsquelleAutor kingmakerking
Konvertieren der Zeichenfolge in ein anderes Zeichen gesetzt, wie dies könnte helfen:
Freundlichen GRÜßEN.
InformationsquelleAutor Tobias Ernst
Versuchte mich zu sammeln die vollständige Liste der unicodes.
Ich es verwenden, um zu extrahieren emojis von tweets und es funktioniert sehr gut für mich.
InformationsquelleAutor Chiheb.K