如何使用 python 将 xml 文件转换为 csv 文件

How to convert xml file to csv file using python

我有一个 xml,我想将其转换为 csv,但出现错误。

在我的 xml 文件中,我希望只将选定的列写入 csv。

import xml.etree.ElementTree as ET
import pandas as pd

root = ET.parse('D:\Task\09_ActionRecorder_0.XML').getroot()

tags =[]
for elem in root:
    for child in elem:
        try:
            tag = {}
            tag["TL"] = child.attrib['TL']
            tag["CN"] = child.attrib['CN']
            tag["DT"] = child.attrib['DT']
            tag["AN"] = child.attrib['AN']
            tags.append(tag)

        except KeyError:
            tags.append(tag)
print(tags)
df_users = pd.DataFrame(tags)
#df_users.head(20)


column_name_update = df_users.rename(columns = {"TL": "Title", 
                                  "CN":"Control Name", 
                                  "DT": "Date Time",
                                  "AN": "Application Name"}) 


#new_data.head(20)

column_name_update.to_csv("D:\Tasks\Sample.csv",index=False, columns=["Title", 'Control Name', 'Date Time', 'Application Name']) 

从给定的 xml 文件中,我希望只写有限的列数(如代码所示)。但是每当我执行上面的代码时,我都会遇到关键错误,并且在 csv 文件中只有一列获得 written.Kindly 帮助(如果有人知道如何这样做)。

我 运行 几个月前遇到了类似的问题,我最终做的只是使用 excel 将文件保存为 CSV,但是在你的情况下我知道这个可能不实用。 我建议使用 python 文件首先使用 bash 脚本将其转换为 CSV(也可以使用 power shell) 然后遍历您的 CSV 文件。

This is how to create the bash script

This is how you can run the script from your python file

希望对您有所帮助

遍历 xml 个文件的列表,并将每个文件转换为 csv

import xml.etree.ElementTree as ET

ATTRIBUTES = ['TL', 'CN', 'DT', 'AN']
data = []
# TODO populate the list - https://docs.python.org/2/library/os.html#os.listdir
list_of_files = []
for file_name in list_of_files:
    root = ET.parse(file_name)
    recs = root.findall('.//Rec')
    for rec in recs:
        data.append([rec.attrib.get(attr, 'N/A') for attr in ATTRIBUTES])
    with open('{}.csv'.format(file_name), 'w') as f:
        f.write('Title,Control Name,Date Time,Application Name' + '\n')
        for entry in data:
            f.write(','.join(entry) + '\n')
   data = []