如何使用python删除latin1和utf-8之间的所有冲突字符?
我调用open(file,“r”)并读取Python中的一些行。这给了我:如何使用python删除latin1和utf-8之间的所有冲突字符?,python,utf-8,character-encoding,ascii,Python,Utf 8,Character Encoding,Ascii,我调用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”
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èè½大屠杀èè½元素
通常,这些都会导致编码问题。请尝试先使用解码,然后再使用编码:
u"text".decode('latin-1').encode('utf-8')
或者尝试使用编解码器打开文件:
import codecs
with codecs.open('file', encoding="your coding")
您的问题可能是以错误的编码打开文件,或者您错误地识别了字符编码
此外,如果您获得ASCII格式的文本,请使用它:
'abc'.decode('ascii')
或
首先,确保在python文件的第一行指定rigth编码
# -*- coding: utf-8 -*-
其次,您可以使用库编解码器指定所需的编码:
import codecs
fich_in = codecs.open(filename,'r', encoding='utf-8')
第三,您可以使用以下命令忽略所有错误字符:
TEXT.encode('utf-8', 'ignore').decode('utf-8')
我正在用那个。。。(ISO-8859-1)您不能找出文件最初使用的编码吗?我不能,这就是我尝试拉丁语1的原因:(对不起,我刚看到utf-8,数据从哪里来?你的数据实际上是utf-8。你能提供你用来读取它的代码吗?也许还可以复制粘贴一些数据?这很有效,我把它做成了ascii码,它删除了那些奇怪的字符。
u“text”。decode('latin-1'))
这是混淆的。你从unicode编码,然后解码到unicode。我只是举个例子来引导编码。我不知道原文,我想topicstarter可以选择。
TEXT.encode('utf-8', 'ignore').decode('utf-8')