CSV在Python中被覆盖,而不是向CSV文件添加行

时间:2015-07-20 15:46:35

标签: xml python-2.7 export-to-csv

我正在使用一系列列表将XML文档转换为CSV,这样我就可以省略XML数据的特定部分。我的代码如下所示:

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

有人可以向我解释为什么会发生这种情况以及如何解决这个问题吗?

由于

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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