【问题标题】:How do I use encode (Python 3) to fix non-ascii code for CSV import in Pandas?如何使用编码(Python 3)修复非 ascii 代码以在 Pandas 中导入 CSV?
【发布时间】:2017-06-28 17:30:06
【问题描述】:

我试图在 pandas 中读取的 CSV 文件有一个非 ascii 字符,但我对编码函数没有任何运气。我正在使用 python 3。

我最初得到的错误是......

UnicodeDecodeError: 'utf-8' 编解码器无法解码位置上的字节 0xa0 252: 无效的起始字节

所以我使用了file_name.encode('ascii'),但现在...

OSError: Expected file path name or file-like object, got type

我的代码...

import pandas as pd

location = "C:\\Downloads\\"
file = "file.csv"

file_name = location + file

master = pd.read_csv(file_name.encode('ascii'))
df = master
df

我知道其中有一个字符需要编码,所以只是尝试编写一些允许 pandas 读取 CSV 的内容。

非常感谢!

【问题讨论】:

  • 您能否包含 file.csv 的内容示例?没有它,我们无法重现您的错误。

标签: python python-3.x pandas


【解决方案1】:

问题是您不想在文件名上使用 ASCII 编码。您想使用该文件的编码读取文件中的数据,然后从该现有 CSV 数据创建一个 pandas 数据框。

根据the documentation,read_csv 可以处理文件对象,就像处理该文件的路径一样容易。

最简单的,你想要这样的东西:

file_obj = open(file_name, encoding="utf-8")
master = pd.read_csv(file_obj)

当然,如果编码不是 utf-8,您需要将适当的编码放入open 命令中。如果您不知道编码,只需一次尝试一种典型的编码,直到一种有效。最受欢迎的是“utf-8”、“ascii”和“latin-1”。

【讨论】:

  • 错误消息中提到的字符 (x0A) 是 latin-n 编码中的不间断空格,所以我第一次尝试使用 'latin-1' .
猜你喜欢
  • 1970-01-01
  • 2015-12-17
  • 1970-01-01
  • 2021-02-07
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 2015-06-27
相关资源
最近更新 更多