【发布时间】:2017-11-23 11:01:21
【问题描述】:
我从http://www.gapminder.org/data 下载了 Excel/CSV 格式的数据集“第一次结婚年龄(女性)”。数据集的第一行带有标题,第一列包含国家名称。
为了读取这些数据,我使用下面的代码。
import numpy as np
source=open("D:\FirstMarriage.csv")
data = np.genfromtxt(source, dtype=None, delimiter=",", skip_header=1)
print data
执行此代码后(在 Spyder IDE 中)我收到此错误:
ValueError: Some errors were detected !
Line #37 (got 118 columns instead of 117)
Line #38 (got 118 columns instead of 117)
Line #72 (got 118 columns instead of 117)
Line #87 (got 118 columns instead of 117)
Line #97 (got 118 columns instead of 117)
Line #98 (got 118 columns instead of 117)
Line #184 (got 118 columns instead of 117)
当我使用 Notepad++ 打开 csv 文件并查找指示的行时,我发现这些行包含名称中带有逗号的国家/地区的名称。此外,这些名称被带入引号,作为唯一可能表明这是一个全名的名称。但是,它对我没有帮助。请看下面的例子(我只显示第一列):
China
Colombia
"Congo, Dem. Rep."
"Congo, Rep."
Costa Rica
有没有简单的方法来清理这些数据并将引号中的名称视为单个字符串?
我在 Windows 10 上使用 Python 2.7 (Anaconda)。
先谢谢了!
【问题讨论】:
-
最简单的方法是将真正的分隔符更改为其他内容,例如
;。事先使用编辑器或过滤器功能执行此操作。csv.reader可以处理引用的材料,但genfromtxt对此没有任何规定。 -
@hpaulj 我已将 Windows 设置更改为将分隔符写入
;。现在它可以正常工作,并且应该为我将来避免问题,因为这个符号通常很少使用。但是,如果我使用预先描述的设置(例如公司)在另一台机器上工作,那么我需要找到一个更强大的解决方案。