2015-07-20 118 views
0

我正在使用一系列列表将XML文档转换为CSV,以便省略XML数据的特定部分。我的代码显示如下:CSV在Python中被覆盖,而不是将行添加到CSV文件

tree=ET.parse('Comments.xml') 
root = tree.getroot() 
dict={} 
Score=[] 
PostID=[] 
ID=[] 
CreationDate=[] 
UserID=[] 
for child in root: 
    dict.update(child.attrib) 
    Score.append(dict['Score']) 
    PostID.append(dict['PostId']) 
    ID.append(dict['Id']) 
    CreationDate.append(dict['CreationDate']) 
    UserID.append(dict['UserId']) 
with open('Comments.csv','wb') as csvfile: 
    writer=csv.writer(csvfile) 
    for x in (0,174304): 
     writer.writerow([Score[x],PostID[x],ID[x],CreationDate[x],UserID[x]]) 

我知道有可能做上述的清洁方法,但还没有真正能够找到他们,我不完全满意,无论使用XML。不幸的是,我创建(Comments.csv)的文件,只包含一对排意见,而不是174305.类似的问题已被证明在这个网站是因为

with open('Comments.csv','wb') 

部分处于循环,这意味着文件反复打开并一次又一次地重写。煤矿是不是在一个循环中,虽然和我的输出最终被

5  3  1 2010-07-19T19:15:52.517 13 
1 115374 221292 2014-09-14T02:04:27.553 805 

可有人请向我解释为什么发生这种情况,以及如何我可能会去修复它?

谢谢

回答

0

会使用附加代码而不是'wb'吗?

with open('Comments.csv','a') as csvfile: 
    writer=csv.writer(csvfile) 
+0

不幸的是,这只是增加了相同的两个条目。 –

0

我发现这个代码的问题实际上是我在做for循环的方式。在上面的代码中,您可以看到我没有'xrange'或'range'语句,所以程序实际上只是在范围内进行第一个和最后一个条目,而不是其他任何其他条目。谢谢你的帮助!

相关问题