我调用open(file,"r")并读取Python中的一些行。这给了我:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 4: ordinal not in range(128)
如果我添加"utf-8",我会得到:
'utf8' codec can't decode bytes in position 28-29: invalid continuation byte
如果我添加"ISO-8859-1",我没有收到任何错误,但一行是这样的:
2890 ready to try Argh� Fantasy Surfer Carnage� Dane, Marlon & Nat C all out! #fantasysurfer
如您所见,有一些额外的字符,可能来自表情符号或其他东西......(这些是推文)。
清理这些线路的最佳方法是什么?
我想删除所有多余的元素...我希望字符串只有数字、字母和常用符号?!>.;等...
注意:我不关心html实体,因为我在另一个函数中替换了它们。我说的是奇怪的Argh ï¿1/2大屠杀ï¿1/2元素。
通常,这些会导致编码问题。
首先,确保在 python 文件的第一行指定了 rigth 编码。
# -*- coding: utf-8 -*-
其次,您可以使用库编解码器指定所需的编码:
import codecs
fich_in = codecs.open(filename,'r', encoding='utf-8')
第三,您可以使用以下方法忽略所有错误的字符:
TEXT.encode('utf-8', 'ignore').decode('utf-8')
# -*- coding: latin-1 -*-
可以帮忙。
尝试先使用解码,然后编码:
u"text".decode('latin-1').encode('utf-8')
或者尝试使用编解码器打开文件:
import codecs
with codecs.open('file', encoding="your coding")
您的问题是以错误的编码打开文件,或者您错误地识别了字符编码。
此外,如果您获得 ASCII 格式的文本,请使用它:
'abc'.decode('ascii')
或
unicode('abc', 'ascii')