【问题标题】:xml to CSV - AttributeError: 'NoneType' object has no attribute 'text'xml 到 CSV - AttributeError:“NoneType”对象没有属性“文本”
【发布时间】:2016-12-29 20:56:41
【问题描述】:
    for tm in teamtree.iter('team_members'):

我正在尝试使用上述函数将这些字段输出到 CSV。 xml 数据存储在一个名为 (projectDetJoined) 的变量中

我收到了这个错误。

Traceback (most recent call last):
   File "10Other.py", line 481, in <module>
parseXMLTaskDetails()
  File "10Other.py", line 355, in parseXMLTaskDetails
taskcid = (t.find('cid').text)
AttributeError: 'NoneType' object has no attribute 'text'

项目存在于 xml 数据中。

任何想法为什么它没有找到它?我有一个类似的函数,它的结构相同但确实有效。

【问题讨论】:

  • 在您的 XML 中,team_members 元素没有 cid 等子元素。它有 item 子元素。也许你的意思是for tm in teamtree.iterfind('team_members/item')。如果某些项目的 CSV 标头没有不同的大小写,您可以在 for 循环正文中将 tm.findtext 映射到它们上以提取要写入的值。不要一直重新打开文件进行追加,而是将 XML 提取移动到最初创建文件和 csv-writer 的 with 块。最后的csvfile.close() 也是多余的。
  • 谢谢。那行得通。根据您的建议优化了代码。非常感谢。直到现在才知道 iterfind 是什么。不知道为什么对这个问题投反对票。但无论如何,这工作得很好,现在我知道了。再次感谢。

标签: python xml csv


【解决方案1】:

Ilja Everilä 的评论解决了我的问题。

在您的 XML 中,team_members 元素没有像 cid 等。它具有项目子元素。也许你的意思是 tm in teamtree.iterfind('team_members/item')。如果您的 CSV 标头没有 某些项目有不同的情况,你可以映射 tm.findtext 在 for 循环体中覆盖它们以提取值 写作。不要一直重新打开文件进行追加,而是移动 XML 提取到最初创建文件的 with 块和 csv 编写器。最后的 csvfile.close() 也是多余的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2021-06-05
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多