Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python删除latin1和utf-8之间的所有冲突字符?_Python_Utf 8_Character Encoding_Ascii - Fatal编程技术网

如何使用python删除latin1和utf-8之间的所有冲突字符?

如何使用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”

我调用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èè½大屠杀èè½元素


通常,这些都会导致编码问题。

请尝试先使用解码,然后再使用编码:

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')