【问题标题】:CSV is overwriting in Python, instead of adding rows to CSV fileCSV 在 Python 中被覆盖,而不是向 CSV 文件中添加行
【发布时间】:2015-07-20 15:46:34
【问题描述】:

我正在使用一系列列表将 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

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    使用附加代码代替'wb'会起作用吗?

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

    【讨论】:

    • 很遗憾没有,这只是添加了相同的两个条目。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-10-11
      • 2018-08-27
      • 2020-08-06
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 2018-10-23
      • 1970-01-01
      相关资源
      最近更新 更多