Python的CSVReader似乎是按句点分开的

2024-04-27 03:46:33 发布

您现在位置:Python中文网/ 问答频道 /正文

有趣的问题是,我使用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,

其中列名称是CSV的标题,下面的项目是行

您可以在这里看到我用来读取这些值的代码

data = pandas.read_csv(file_to_open)

Headers = data['COLUMN_NAMES'].tolist()

熊猫就是这样解释这些行的

76org2101
75org2001
72ogg8090

数据完全相同,我们看到的行为也完全相同!带句点的列名以完全相同的方式截断

怎么了?因为Pandas和CSVReader都有相同的问题,我很想这是一个python问题,但我不知道如何解决它。任何想法都很感激

编辑:问题是我的代码,我读错了文件,碰巧有相同的列名作为我的预期文件,只是没有任何前后的句点。几率有多大


Tags: 文件csvto数据代码timeopenreader
1条回答
网友
1楼 · 发布于 2024-04-27 03:46:33

使用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版本

相关问题 更多 >