如何读取XML格式的TXT文件并转换为DataFrame
解决robust.txt文件读取与XML转DataFrame问题
问题1:读取扩展名是txt但内容为XML的robust.txt文件
文件扩展名不影响内容解析,直接按XML文件处理即可,两种常见实现方式:
- 方式一:先读取文本内容,再传入XML解析器
with open('robust.txt', 'r', encoding='utf-8') as f: xml_content = f.read() # 后续可将xml_content交给XML解析库处理
- 方式二:直接用XML解析库加载文件(推荐)
import xml.etree.ElementTree as ET # 解析器会识别XML内容,忽略文件扩展名 tree = ET.parse('robust.txt') root = tree.getroot()
问题2:将XML数据转换为指定结构的DataFrame
结合xml.etree.ElementTree解析XML,提取目标字段后用pandas生成符合要求的DataFrame,完整实现如下:
代码示例
import xml.etree.ElementTree as ET import pandas as pd # 解析XML文件 tree = ET.parse('robust.txt') root = tree.getroot() # 初始化列表存储每行数据 data_list = [] # 遍历每个<top>节点 for top_node in root.findall('top'): # 提取num字段(只保留数字部分) num_raw = top_node.find('num').text.strip() num = num_raw.split(':')[-1].strip() # 提取title字段 title = top_node.find('title').text.strip() # 提取desc字段(去除前缀并清理换行) desc_raw = top_node.find('desc').text.strip() desc = desc_raw.split('Description:')[-1].strip().replace('\n', ' ') # 提取narr字段(去除前缀并清理换行) narr_raw = top_node.find('narr').text.strip() narr = narr_raw.split('Narrative:')[-1].strip().replace('\n', ' ') # 将当前节点数据加入列表 data_list.append({ 'num': num, 'title': title, 'desc': desc, 'narr': narr }) # 转换为DataFrame df = pd.DataFrame(data_list) # 查看结果 print(df)
代码说明
- 遍历XML中所有
<top>节点,每个节点对应DataFrame的一行数据 - 对
num、desc、narr字段做针对性清理:提取有效内容、去除多余换行和空格 - 最终生成的DataFrame完全匹配你期望的结构,包含
num、title、desc、narr四个列
内容的提问来源于stack exchange,提问作者Fabio Citti
相关产品推荐
相关产品推荐

