【问题标题】:Python's CSVReader seems to be seperating on periodsPython CSV Reader 似乎在句点上分开
【发布时间】: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


【解决方案1】:

使用pd.__version__'0.23.0'python版本3.6.5,我得到了预期的结果:

print(pd.read_csv('test.csv'))

       COLUMN_NAMES
0  b12.76org2101.xz
1  b12.75org2001.xz
2  b11.72ogg8090.xy

headers = pd.read_csv('test.csv')['COLUMN_NAMES'].tolist()

print(headers)

['b12.76org2101.xz', 'b12.75org2001.xz', 'b11.72ogg8090.xy']

如果这些值是列,它也可以工作:

pd.DataFrame(columns=headers).to_csv('test1.csv', index=None)

print(pd.read_csv('test1.csv'))

Empty DataFrame
Columns: [b12.76org2101.xz, b12.75org2001.xz, b11.72ogg8090.xy]
Index: []

也许尝试更新您的python 版本?

【讨论】:

    猜你喜欢
    • 2013-09-15
    • 1970-01-01
    • 2018-10-17
    • 2011-09-14
    • 2016-11-26
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多