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

如何读取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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:05:20