【发布时间】:2015-07-22 22:37:30
【问题描述】:
我正在从几个 URL 表中抓取数据。我的代码允许我得到这样的csv(使用分号作为昏迷......欧洲)
a;1 -------- 1st URL
b;2
c;3
d;4
e;5
a;7 ---------- 2nd URL
b;3
c;5
d;8
e;9
a;9 ---------- 3rd URL
b;3
y;5
---URL 不是 CSV 的一部分。它只是向您显示 URL1 的数据从哪里开始,等等。
我从来不知道一个 URL 将包含多少字段以及他将包含哪些字段。
我想得到一个看起来像这样组织良好的 CSV(带有示例):
Name ; 1stUrl ;2ndURl ;3rd Url
a;1;7;9
b;2;3;3
c;3;5;ø
d;4;8;ø
e;5;9;ø
y;ø;ø;5
我不太关心 a,b,c,d 的顺序。这些字段可以按照他们最喜欢的顺序排列。
问题是我有两个问题: - 当代码遇到新字段时,它必须将其添加到字段列表中('y' 字段的示例)。 - 代码必须留有空白/真空空间;ø;当该字段的 URL 中没有键时。
我尝试了一些不好的东西,但显然不是这样。即使在概念上,我也不在那里。
from collections import *
import csv
def parse_csv(content, delimiter = ';'):
csv_data = []
for line in content.split('\n'):
csv_data.append( [x.strip() for x in line.split( delimiter )] ) # strips spaces also
return csv_data
s =parse_csv(open('raw.csv','rU', encoding='utf8').read())
print(len(s))
dic = defaultdict(list)
for n in range(0,len(s)):
if (len(s[n]) == 2):
key = s[n][0]
val = s[n][1]
print(key)
print(val)
writer = csv.writer(open('dict.csv', 'w',encoding='utf8'), delimiter=';')
for key, value in dico.items():
writer.writerow([key, value])
你怎么看?
任何帮助将不胜感激:)!
【问题讨论】:
标签: python csv dictionary