Scrapy 默认情况下将数据写入 CSV 文件列。一个字段/列。我如何按行编写数据,即。水平方向,其中一行的第一个单元格将是字段的名称。
我浏览了scrapy文档,但没有任何东西可以用来更改CSV中数据的写入格式
更新:
我现在的情况:
产品,价格
电视,25000
冰箱,15000
这就是我想要的:
产品,电视,冰箱
价格,25000,15000
为什么我要这样?
我正在继续之前其他人完成的数据提取过程,并且已经完成了 65% 的过程。所以这是为了保持格式的一致性。
Scrapy 默认情况下将数据写入 CSV 文件列。一个字段/列。我如何按行编写数据,即。水平方向,其中一行的第一个单元格将是字段的名称。
我浏览了scrapy文档,但没有任何东西可以用来更改CSV中数据的写入格式
我现在的情况:
产品,价格
电视,25000
冰箱,15000
这就是我想要的:
产品,电视,冰箱
价格,25000,15000
为什么我要这样?
我正在继续之前其他人完成的数据提取过程,并且已经完成了 65% 的过程。所以这是为了保持格式的一致性。
如果 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))