【发布时间】:2019-07-27 04:33:25
【问题描述】:
有趣的问题,我正在使用 python 的 CSVreader 从 UTF-8 格式的 CSV 文件中读取逗号分隔的数据。读者在遇到句点时似乎正在截断列名。
例如,这是我的列名示例。
time,b12.76org2101.xz,b12.75org2001.xz,b11.72ogg8090.xy
这就是我读取这些数据的方式
def parseCSV(inputData):
file_to_open = inputData
with open(file_to_open) as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
headerLine = True
line = []
for row in csv_reader:
//column manipulation code here
下面是 CSVReader 解释这些列名的方式
time,76org2101,75org2001,72ogg8090
这是重要的一点,我分享的代码是程序中最先触及该 CSV 文件的代码。代码完成执行后,我还可以验证 CSV 文件本身是否未更改。问题必须在于 CSVReader 如何解释句点,但我不确定修复是什么
这是另一个有趣的发现。稍后在程序中,我使用 Pandas 从另一个文件的列中读取相同名称的列表。
数据格式如下
COLUMN_NAMES
b12.76org2101.xz,
b12.75org2001.xz,
b11.72ogg8090.xy,
其中 COLUMN_NAMES 是 CSV 的标题,下面的项目是行。
您可以在此处查看我用来读取这些值的代码。
data = pandas.read_csv(file_to_open)
Headers = data['COLUMN_NAMES'].tolist()
这就是 Pandas 解释这些行的方式
76org2101
75org2001
72ogg8090
数据完全相同,我们看到的行为完全相同!带有句点的列名以完全相同的方式被截断。
那么怎么了?因为 Pandas 和 CSVReader 都有相同的问题,所以我很想这是一个 python 问题,但我不知道如何解决它。任何想法表示赞赏!
编辑:问题出在我的代码上,我正在读取错误的文件,这些文件碰巧与我的预期文件具有相同的列名,只是在句点之前或之后没有任何内容。几率有多大!
【问题讨论】:
-
你使用的是什么版本的
pandas? -
版本 0.24.2 在 python 3.6.3 上运行
-
如果你运行我的第二组代码会发生什么?
-
嗯,似乎运行得很好。所以问题一定在我的代码之内,开枪
标签: python pandas csv validation