如何将含多属性值的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
相关产品推荐
相关产品推荐

