将 XML 文件转换为 CSV 文件的有效方法?

我正在尝试找到一种使用 Python 将 xml 文件转换为 csv 文件的方法。我想这样做,以便脚本能够解析每个警报的 xml 文件(请参阅下面的 xml 片段)。

因此,它将创建一个 xls 文件,其中包含 、 、 和 的列,eventType类似于probableCause以下description格式severities

我尝试过的(小样本):


from logging import root

from xml.etree import ElementTree

import os

import csv


tree = ElementTree.parse('Fault.xml')


sitescope_data = open('Out.csv', 'w', newline='', encoding='utf-8')

csvwriter = csv.writer(sitescope_data)


col_names = ['eventType', 'probableCause', 'description']

csvwriter.writerow(col_names)


root = tree.getroot()

for eventData in root.findall('alarms'):

    event_data = []

    event = eventData.find('alarm')



    event_id = event.find('eventType')

    if event_id != None :

        event_id = event_id.text

    event_data.append(event_id)


    csvwriter.writerow(event_data)


sitescope_data.close()


婷婷同学_
浏览 248回答 1
1回答

烙印99

root = tree.getroot()def get_uri(elem):    if elem.tag[0] == "{":        uri, ignore, tag = elem.tag[1:].partition("}")        return f"{{{uri}}}"    return ""uri = get_uri(root)def recurse(root):    for child in root:        recurse(child)        print(child.tag)    for event in root.findall(f'{uri}alarm'):        event_data = []        event_id = event.find(f'{uri}eventType')        if event_id != None :            event_id = event_id.text        event_data.append(event_id)        probableCause = event.find(f'{uri}probableCause')        if probableCause != None:            probableCause = probableCause.text        event_data.append(probableCause)        severities = event.find(f'{uir}severities')        if severities:            severity_data = ','.join([sv.text for sv in severities.findall('f{uri}severity')])            event_data.append(severity_data)        else:            event_data.append("")        csvwriter.writerow(event_data)        recurse(root)需要注意的事项:使用递归遍历 XMLprint 语句将显示您的每个标签都有来自根目录中 xmlns 属性的 {urn:nortel:namespaces:mcp:faults} ,这可能是最让您困惑的地方。我添加了一个函数来获取此“uri”文本并将其添加到每个标签前面。每次写入 csv 时,您都需要附加多于一列
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python