我有一个网络抓取工具,可将抓取数据保存到CSV文件中。数据如下所示:
random text Johm May 1234 Big Street Atlanta, GA 30331 acre .14 small random text Jane Jones 4321 Little Street Atlanta, GA 30322 acre .07 small random text
我想:
(1)在名称,街道,地址< ---中添加列。请注意,此示例以逗号分隔。
(2)我想在上面发布的地址结果中添加逗号。一个例子是:
jane jones ,4321 Little Street ,,Atlanta, GA 30344 ,,,acre .07 small ,,,random text
请注意如何使用逗号将每行推送到所需的列,其中不需要的数据为.07,小的随机文本被推离指定的列。
我如何在python中执行此操作?我可以手工完成,但我正在处理成千上万的地址,我需要一个简单的方法来在python中执行此操作。
是否可以在删除之后将所有数据拉入列表,并为逗号分配变量,如a =,b = ,, c = ,,,然后将变量加入特定的列表中的行,然后再次保存?
此外,我还需要添加列信息:列名称,街道,地址
答案 0 :(得分:2)
我只是猜测你在很多方面的意思,因为你的问题似乎缺少一些细节,但这应该会让你得到类似你想要的东西:
import csv
with open('data.txt', 'r') as f:
with open('data.csv', 'wb') as csv_out:
line_iter = iter(l.rstrip('\n') for l in f)
writer = csv.writer(csv_out)
writer.writerow(['Name', 'Street', '', 'Address'])
try:
line_iter.next() # discard 'random text' (?)
while True:
writer.writerow([line_iter.next(), '', '', ''])
writer.writerow(['', line_iter.next(), '', ''])
writer.writerow(['', '', line_iter.next(), ''])
writer.writerow(['', '', '', line_iter.next()])
writer.writerow(['', '', '', line_iter.next()])
except StopIteration:
pass # reached end of file
它为上面的示例数据提供了此输出:
Name,Street,,Address Johm May,,, ,1234 Big Street,, ,,"Atlanta, GA 30331", ,,,acre .14 small ,,,random text Jane Jones,,, ,4321 Little Street,, ,,"Atlanta, GA 30322", ,,,acre .07 small ,,,random text