python - 如何将多个 XML 文件解析为多个 CSV 文件?

标签 python xml pandas csv elementtree

我使用此代码解析了 XML 文件,该代码适用于单个 xml 输入到单个 csv 输出。我尝试使用 glob 处理多个输入以及多个 csv 输出,但我知道这是不正确的。

import glob
import xml.etree.ElementTree as et
import csv

for file in glob.glob('./*.xml'):
    with open(file) as f:
        tree = et.parse(f)
        nodes = tree.getroot()

        with open(f'{f[:-4]}edited.csv', 'w') as ff:
            cols = ['dateTime','x','y','z','motion','isMoving','stepCount','groupAreaId','commit']
            nodewriter = csv.writer(ff)
            nodewriter.writerow(cols)
            for node in nodes:
                values = [ node.attrib.get(kk, '') for kk in cols]
                nodewriter.writerow(values)

我应该如何更改以获得多个 csv 输出?

最佳答案

您的代码当前使用文件句柄来形成输出文件名。代替 f 使用 file 如下:

import glob
import xml.etree.ElementTree as et
import csv

for file in glob.glob('./*.xml'):
    with open(file) as f:
        tree = et.parse(f)
        nodes = tree.getroot()

        with open(f'{file[:-4]}edited.csv', 'w') as ff:
            cols = ['dateTime','x','y','z','motion','isMoving','stepCount','groupAreaId','commit']
            nodewriter = csv.writer(ff)
            nodewriter.writerow(cols)
            for node in nodes:
                values = [ node.attrib.get(kk, '') for kk in cols]
                nodewriter.writerow(values)

关于python - 如何将多个 XML 文件解析为多个 CSV 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56896188/

相关文章:

pandas - PIP3 - 如何减少为 <lib> 构建轮子所花费的时间?

python 3 |在 for 循环中使用多个 if 语句?

python - CloudFormation !Ref 主题未提供 ARN

java - 使用/将 XML 文件转换为 Spring bean 定义

php - Google Adwords API 报告实用程序 - PHP - XML 无效?

Java:如何将 Hibernate 命名 SQL 查询(在 XML 文件中)的结果映射到带注释的实体

python - Pyinstaller:无法执行脚本 pyi_rth_qt4plugins

python - 从图像中删除 OCR 词(OpenCV,Python)

python - 更改 value_counts 中的排序

python - 收到 `KeyError: u' 没有名为 XYZ'` 的项目错误