numpy读取CSV文件,其中一些字段有逗号?

时间:2013-01-18 17:54:45

标签: python csv numpy comma

我正在尝试使用numpy.recfromcsv(...)读取CSV文件,其中某些字段中包含逗号。其中包含逗号的字段用引号括起,即"value1, value2"。 Numpy看到引用的字段是两个不同的字段,它不能很好地工作。我现在使用的命令是

    data = numpy.recfromcsv(dataFilename, delimiter=',', autstrip=True)

我发现了这个问题

  

Read CSV file with comma within fields in Python

但它不使用numpy,我真的很喜欢使用它。 所以我希望这里有至少一个选项:

  1. numpy.recfromcsv(...)有哪些选项允许我将引用的字段作为一个字段而不是多个以逗号分隔的字段读取?
  2. 我应该以不同方式格式化我的CSV文件吗?
  3. (或者,但不理想)按照引用的问题阅读CSV,并使用额外的步骤创建numpy数组。
  4. 请告知。

3 个答案:

答案 0 :(得分:2)

可以使用pandas

执行此操作
np_array = pandas.io.parsers.read_csv("file_with_comma_fields_quoted.csv").as_matrix()

答案 1 :(得分:1)

如果您考虑使用本机Python csv阅读器,使用Python doc here

Python csv reader定义了一些可选的Dialect.quotechar选项,默认为'"'。在csv格式标准中,quotechar是另一个字段分隔符,并且分隔符(在您的情况下为逗号)可以包含在引用字段中。在this page的第一部分中明确了以csv格式引用字符的规则。

因此,似乎默认引用字符为",本机Python csv阅读器在默认模式下管理您的问题。

如果你想坚持使用Python,为什么不首先清理你的csv文件,使用regexp来识别引用的字段,然后将分隔符从逗号更改为\t。但是在这里你实际上是在自己解析csv格式。

答案 2 :(得分:0)

事实证明,最简单的方法是使用标准库模块csv将文件读入元组,然后使用元组作为numpy数组的输入。我希望我能用numpy读它,但这似乎不起作用。