You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含多属性值的XML单标签解析为DataFrame?

解析XML提取属性并转换为List/DataFrame的方法

要解析你提供的XML并提取id、old_id属性转成List或DataFrame,先得注意原XML里的两处语法问题:一是<timestamp="20220113">格式错误,属性得写成键值对形式(比如改成<timestamp value="20220113"/>);二是defintions拼写错误,正确写法是definitions,先修正这些语法问题才能正常解析。下面给两种实用方法:

方法一:用Python标准库提取为List

使用xml.etree.ElementTree(Python自带,无需额外安装),可以手动遍历标签提取属性:

import xml.etree.ElementTree as ET

# 修正后的XML内容
xml_content = '''<?xml version="2.0" encoding="UTF-8" ?>
<root>
    <timestamp value="20220113"/>
    <definitions>
        <definition id="1" old_id="0">Lang</definition>
        <definition id="7" old_id="1">Eng</definition>
    </definitions>
</root>'''

# 解析XML字符串
root = ET.fromstring(xml_content)

# 遍历所有definition标签,提取属性存进List
attr_list = []
for item in root.findall('.//definition'):
    attr_dict = {
        'id': item.get('id'),
        'old_id': item.get('old_id'),
        'content': item.text  # 可选:提取标签内的文本内容
    }
    attr_list.append(attr_dict)

print(attr_list)
# 输出结果:
# [{'id': '1', 'old_id': '0', 'content': 'Lang'}, {'id': '7', 'old_id': '1', 'content': 'Eng'}]

如果是读取本地XML文件,把ET.fromstring(xml_content)换成tree = ET.parse('你的文件路径.xml'),再用root = tree.getroot()即可。

方法二:用Pandas快速转换为DataFrame

如果需要直接生成DataFrame,用Pandas的read_xml方法最方便,自动把属性转成列:

import pandas as pd

# 用修正后的XML内容,或者直接传入本地文件路径
df = pd.read_xml(xml_content, xpath='.//definition')

print(df)
# 输出结果:
#   id old_id  text
# 0  1      0  Lang
# 1  7      1   Eng

如果要读取本地文件,直接写pd.read_xml('你的文件路径.xml', xpath='.//definition')就行。

内容的提问来源于stack exchange,提问作者x89

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 02:55:16