5

我正在尝试使用numpy.recfromcsv(...)某些字段中包含逗号的位置来读取 CSV 文件。包含逗号的字段用引号括起来,即"value1, value2". Numpy 将引用的字段视为两个不同的字段,并且效果不佳。我现在使用的命令是

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

我发现了这个问题

在 Python 的字段中读取带逗号的 CSV 文件

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

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

请指教。

4

3 回答 3

2

可以用pandas做到这一点:

np_array = pandas.io.parsers.read_csv("file_with_comma_fields_quoted.csv").as_matrix()
于 2013-02-12T14:42:55.327 回答
1

如果您考虑使用本机 Python csv 阅读器,请在此处使用 Python 文档:

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

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

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

于 2013-01-21T20:15:50.260 回答
0

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

于 2013-01-21T21:45:09.040 回答