Python的CSVReader似乎在句点上是分开的

时间:2019-07-26 18:45:11

标签: python pandas csv validation

一个有趣的问题,我正在使用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()

这就是熊猫解释那些行的方式

76org2101
75org2001
72ogg8090

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

那是怎么回事?由于Pandas和CSVReader都存在相同的问题,因此我很容易认为这是python问题,但是我不确定如何解决它。任何想法表示赞赏!

编辑:问题出在我的代码上,我正在读取错误的文件,这些文件偶然碰巧具有与预期文件相同的列名,而句点之前或之后没有任何内容。几率!

1 个答案:

答案 0 :(得分: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版本?