2016-04-09 147 views
0

這個正則表達式假設去除表情符號,但是當我在示例文本上嘗試它時,它不起作用。它以前工作..不知道我缺少什麼。謝謝Python正則表達式去除表情符號不起作用

這裏是一個示例文本:pastebin.com/uYUNk9R1 放在要測試的記事本文檔中,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

你可以在你所遇到的問題澄清? – bgarcia

+0

這會將行打印到標準輸出,但不會將它們寫入輸出文件。爲此你需要使用'out.write'。 –

+0

對不起,這是我的原始代碼,但它仍然沒有工作,@ bgarcia我試圖從一段文字中刪除表情圖標。 – Sorry

回答

0

您需要將輸入數據轉換爲Unicode

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

當我這樣做時出現此錯誤:「UnicodeEncodeError:'ascii'編解碼器無法編碼字符u'\ ufeff'在位置0:序號不在範圍內(128)」 – Sorry

+0

我不會再收到錯誤了do:out.write(line.encode),但表情符號仍然存在。 – Sorry

+0

您需要對要寫入文件的數據進行編碼out.write(line.encode('utf-8'))' – goten002