【问题标题】:How to write an XML file to a CSV file in Python?如何在 Python 中将 XML 文件写入 CSV 文件?
【发布时间】:2021-01-15 21:28:14
【问题描述】:

我有一个如下所示的 XML 文件:

<?xml version="1.0"?>
-<Object>
    <ID>Object_01</ID>
    <Location>Manchester</Location>
    <Date>01-01-2020</Date>
    <Time>15u59m05s</Time>   
-<Max_25Hz>
    <25Hz1>0.9166</25Hz>
    <25Hz2>0.7979</25Hz>
</Max_25Hz>
-<Max_75Hz>
    <75Hz1>1.9659</75Hz>
    <75Hz2>1.4831</75Hz>
</Max_75Hz>
</Object>

现在我想将数据写入一个以制表符分隔的 csv 文件,如下所示:

ID          Location     Date&Time            25Hz1     25Hz2        
Object_01   Manchester   01-01-2020 15:59:05  0.9166    0.7979     

请注意,日期和时间在 XML 文件中是分开的,但我需要在 CSV 文件中将它们放在一起。

这是我试过的代码:

import xml.etree.ElementTree as ET
import csv

root = r'c:\data\FF\Desktop\my_file\XML-files\Object_01.xml'
tree = ET.parse(root)
root = tree.getroot()

headers = ['ID', 'Location','Date&Time','25Hz1','25Hz2']
with open ('new_XML_file.txt', 'w') as f:
     writer = csv.writer(f)
     for item in root.findall('Object'):
         row = []

         ID = item.find('Object').find('ID').text
         row.append(ID)

         location = item.find('Object').find('Location').text
         row.append(location)

         date = item.find('Object').find('Date').text   
         time = item.find('Object').find('Location').text
         date_time = date+time
         row.append(location)

         var_25Hz1 = item.find('Max_25Hzt').find('25Hz1').text
         row.append(var_25Hz1 )

         var_25Hz2 = item.find('Max_25Hz').find('25Hz2').text
         row.append(var_25Hz2 )

         writer.writerow(headers)
         writer.writerow(row)

我只是得到一个空的new_XML_file.txt 回来,没有任何错误。谁知道我做错了什么以及如何解决这个问题?

【问题讨论】:

  • Python 变量规则:变量名必须以字母或下划线字符开头。变量名不能以数字开头。所以你必须改变25Hz1
  • "no errors nothing" 我不这么认为。要么您使用此代码出现语法错误,要么您在此处显示的代码不是您正在使用的代码。
  • 在代码中添加tryexcept...
  • 我已经编辑了我的代码。真的没有收到任何错误。
  • 您已经检查过.findall('Object') 确实找到了什么?

标签: python xml csv elementtree


【解决方案1】:

您示例中的rootobject,因此当您编写:for item in root.findall('Object') 时,您什么也找不到。

试试:

for item in root:

【讨论】:

  • 啊,那是真的..但是如果我想在根目录中查找ID 怎么办?
  • root[0].text 会完成这项工作,但这是另一个问题
猜你喜欢
  • 1970-01-01
  • 2023-02-08
  • 1970-01-01
  • 2014-02-04
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多