2016-04-09 7 views
0

Dieser reguläre Ausdruck soll Emoticons entfernen, aber wenn ich es an meinem Beispieltext versuche, funktioniert es nicht. Es funktionierte vorher ... nicht sicher, was ich vermisse. DankePython Regulärer Ausdruck Emoticons zu entfernen Funktioniert nicht

Hier ist ein Beispieltext: pastebin.com/uYUNk9R1 Platz in Notepad Dokument zu testen, Python 2.7.

import re 
myre = re.compile('(' 
'\ud83c[\udf00-\udfff]|' 
'\ud83d[\udc00-\ude4f\ude80-\udeff]|' 
'[\u2600-\u26FF\u2700-\u27BF])+'.decode('unicode_escape'), 
re.UNICODE) 

def clean(inputFile,outputFile): 
    with open(inputFile, 'r') as original,open(outputFile, 'w+') as out: 
     for line in original: 
      line = myre.sub('', line) 
      out.write(line) 
+1

können Sie das Problem klären Sie haben? – bgarcia

+0

Dadurch werden die Zeilen in stdout gedruckt, aber nicht in die Ausgabedatei geschrieben. Dazu müssen Sie 'out.write' verwenden. –

+0

Entschuldigung, das war mein ursprünglicher Code, aber es hat immer noch nicht funktioniert, @Bgarcia Ich versuche, Emoticons aus einem Stück Text zu entfernen. – Sorry

Antwort

0

Sie benötigen eine Eingangsdaten in Unicode konvertieren

line = myre.sub('', line.decode('utf-8')) 
+0

Ich bekomme diesen Fehler, wenn ich das tue: "UnicodeEncodeError: 'ascii' Codec kann das Zeichen u '\ uefeff' nicht in Position 0 codieren: Ordinal nicht im Bereich (128)" – Sorry

+0

Ich erhalte den Fehler nicht mehr, wenn ich do: out.write (line.encode), aber die Emoticons sind immer noch da. – Sorry

+0

Sie müssen die Daten kodieren, in die Sie schreiben wollen 'out.write (line.encode ('utf-8'))' – goten002

Verwandte Themen