Python打开CSV文件,并假定使用混合编码?

Python打开CSV文件,并假定使用混合编码?,python,csv,encoding,utf-8,character-encoding,Python,Csv,Encoding,Utf 8,Character Encoding,我正在尝试使用Python读取CSV文本文件(根据Notepad++,UTF-8没有BOM)。但是,编码似乎存在问题: print(open(path, encoding="utf-8").read()) 非法UTF-16替代品 即使我尝试用自动编解码器查找器打开它,我也会收到错误 def csv_unireader(f, encoding="utf-8"): for row in csv.reader(codecs.iterencode(codecs.iterdecode(f, enc

我正在尝试使用Python读取CSV文本文件(根据Notepad++,UTF-8没有BOM)。但是,编码似乎存在问题:

print(open(path, encoding="utf-8").read()) 非法UTF-16替代品

即使我尝试用自动编解码器查找器打开它,我也会收到错误

def csv_unireader(f, encoding="utf-8"): for row in csv.reader(codecs.iterencode(codecs.iterdecode(f, encoding), "utf-8")): yield [e.decode("utf-8") for e in row] def csv_unireader(f,encoding=“utf-8”): 对于csv.reader中的行(codecs.iterencode(codecs.iterdecode(f,encoding),“utf-8”): 产量[e.decode(“utf-8”)用于第行中的e] 我忽略了什么?该文件包含Twitter文本,其中包含许多不同的字符,这是肯定的。但在Python中,这不会是如此困难的任务,只需读取/打印文件?

编辑:

刚刚尝试使用此答案中的代码:

导入csv 将open('source.csv',newline='',encoding='utf-8')作为f: 读卡器=csv。读卡器(f) 对于读取器中的行: 打印(行) 这至少会将一些行打印到屏幕上,但也会在某些行之后抛出错误:

cp850.py,第19行,编码 返回codecs.charmap\u encode(输入、自身错误、编码\u映射)[0] UnicodeEncodeError:“charmap”编解码器无法对位置62-63中的字符进行编码: 字符映射到


它似乎会自动使用另一种编码方式
CP850
。。。我无法理解这一切….

您的python版本是什么? 如果使用2.x,请尝试在脚本开头粘贴导入:

from __future__ import unicode_literals
然后尝试:

print(open(path).read().encode('utf-8'))
还有一个很好的字符集检测工具:。
我希望它能帮助您。

您的python版本是什么? 如果使用2.x,请尝试在脚本开头粘贴导入:

from __future__ import unicode_literals
然后尝试:

print(open(path).read().encode('utf-8'))
还有一个很好的字符集检测工具:。
我希望它能帮助您。

您的python版本是什么? 如果使用2.x,请尝试在脚本开头粘贴导入:

from __future__ import unicode_literals
然后尝试:

print(open(path).read().encode('utf-8'))
还有一个很好的字符集检测工具:。
我希望它能帮助您。

您的python版本是什么? 如果使用2.x,请尝试在脚本开头粘贴导入:

from __future__ import unicode_literals
然后尝试:

print(open(path).read().encode('utf-8'))
还有一个很好的字符集检测工具:。
我希望它能帮助您。

您可以在open函数中使用errors参数。您可以尝试以下选项之一(我从python文档中提取了描述):

  • “忽略”忽略错误。请注意,忽略编码错误可能会导致数据丢失
  • “replace”导致在存在格式错误数据的位置插入替换标记(如“?”)
  • “SurrogateScape”将在Unicode专用区域(范围从U+DC80到U+DCFF)中将任何不正确的字节表示为代码点。当在写入数据时使用代理场景错误处理程序时,这些私有代码点将被转换回相同的字节。这对于处理未知编码的文件很有用
因此,您可以使用:

print(open(path, encoding="utf-8", errors="ignore").read())

您可以在open函数中使用errors参数。您可以尝试以下选项之一(我从python文档中提取了描述):

  • “忽略”忽略错误。请注意,忽略编码错误可能会导致数据丢失
  • “replace”导致在存在格式错误数据的位置插入替换标记(如“?”)
  • “SurrogateScape”将在Unicode专用区域(范围从U+DC80到U+DCFF)中将任何不正确的字节表示为代码点。当在写入数据时使用代理场景错误处理程序时,这些私有代码点将被转换回相同的字节。这对于处理未知编码的文件很有用
因此,您可以使用:

print(open(path, encoding="utf-8", errors="ignore").read())

您可以在open函数中使用errors参数。您可以尝试以下选项之一(我从python文档中提取了描述):

  • “忽略”忽略错误。请注意,忽略编码错误可能会导致数据丢失
  • “replace”导致在存在格式错误数据的位置插入替换标记(如“?”)
  • “SurrogateScape”将在Unicode专用区域(范围从U+DC80到U+DCFF)中将任何不正确的字节表示为代码点。当在写入数据时使用代理场景错误处理程序时,这些私有代码点将被转换回相同的字节。这对于处理未知编码的文件很有用
因此,您可以使用:

print(open(path, encoding="utf-8", errors="ignore").read())

您可以在open函数中使用errors参数。您可以尝试以下选项之一(我从python文档中提取了描述):

  • “忽略”忽略错误。请注意,忽略编码错误可能会导致数据丢失
  • “replace”导致在存在格式错误数据的位置插入替换标记(如“?”)
  • “SurrogateScape”将在Unicode专用区域(范围从U+DC80到U+DCFF)中将任何不正确的字节表示为代码点。当在写入数据时使用代理场景错误处理程序时,这些私有代码点将被转换回相同的字节。这对于处理未知编码的文件很有用
因此,您可以使用:

print(open(path, encoding="utf-8", errors="ignore").read())

chardet
在25mb文件上运行多年。。。感谢您的指导思想该编码是根据
chardet
编码的
ISO-8859-2
您是否先尝试解码,然后再尝试编码?(.解码('iso-8859-2')。编码('utf-8'))是。我最终将文本复制/粘贴到一个新的文本文件中。现在这是一个可行的解决方案。
chardet
在25mb文件上运行了很长时间。。。感谢您的指导思想该编码是根据
chardet
编码的
ISO-8859-2
您是否先尝试解码,然后再尝试编码?(.解码('iso-8859-2')。编码('utf-8'))是。我最终将文本复制/粘贴到一个新的文本文件中。现在这是一个可行的解决方案。
chardet
在25mb文件上运行了很长时间。。。感谢您的指导思想,编码是
ISO-8859-2
accordi