0

Scrapy 默认情况下将数据写入 CSV 文件列。一个字段/列。我如何按行编写数据,即。水平方向,其中一行的第一个单元格将是字段的名称。

我浏览了scrapy文档,但没有任何东西可以用来更改CSV中数据的写入格式

更新:

我现在的情况:

产品,价格
电视,25000
冰箱,15000

这就是我想要的:

产品,电视,冰箱
价格,25000,15000

为什么我要这样?
我正在继续之前其他人完成的数据提取过程,并且已经完成了 65% 的过程。所以这是为了保持格式的一致性。

4

1 回答 1

1

如果 CSV 文件很大并且您希望避免将数据加载到 Python 列表或字典中,您可以这样做:

infile = "/path/to/input_file.csv"
outfile = "/path/to/output_file.csv"
with open(infile, 'r') as source:
    num_fields = len(source.readline().split(','))
    source.seek(0) # Go back to beginning
    with open(outfile, 'w') as dest:
        for n in range(num_fields):
            for input_line in source:
                dest.write(input_line.split(',')[n] + ',')
            source.seek(0)
            dest.write('\b\n') # remove trailing comma

否则,您可以加载所有内容:

infile = "/path/to/input_file.csv"
outfile = "/path/to/output_file.csv"
with open(infile, 'r') as source:
    data = [line.strip().split(',') for line in source]
with open(outfile, 'w') as dest:
    for n in range(len(data[0])):
        dest.writeline(','.join(line[n] for line in data))
于 2013-08-25T15:54:07.287 回答