numpy.loadtxt:如何忽略引号内出现的逗号分隔符?

cas*_*5nq 5 python csv numpy

我有一个 csv 文件,其中一行数据可能如下所示:

10,《苹果、香蕉》,20,...

当我在 Python 中加载数据时,引号内的额外逗号会移动我所有的列索引,因此我的数据不再是一致的结构。虽然我可能会编写一个复杂的算法来遍历每一行并解决问题,但我希望有一种优雅的方法可以将额外的参数传递给 loadtxt(或其他一些函数),该参数将正确忽略引号内的逗号并处理整个报价作为一个值。

请注意,当我将 CSV 文件加载到 Excel 中时,Excel 正确地将该字符串识别为一个值。

Jua*_*oco 0

您可以使用Python csv模块:https://docs.python.org/2/library/csv.html

给定一个 csv 格式的数据文件:

10,"Apple,Banana",20
20,"Orange,Watermelon",30
Run Code Online (Sandbox Code Playgroud)

使用这个脚本:

from csv import reader

with open('data.csv') as f:
    for row in reader(f):
        print row
Run Code Online (Sandbox Code Playgroud)

你得到:

['10', 'Apple,Banana', '20']
['20', 'Orange,Watermelon', '30']
Run Code Online (Sandbox Code Playgroud)

由于 loadtxt 需要一个可迭代对象,因此传递它reader(f)

with open('data.csv') as f:
    data = loadtxt(reader(f), ...)
Run Code Online (Sandbox Code Playgroud)