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

Python批量提取多XML文件标签文本写入CSV的报错如何解决?

错误原因分析

  1. 第一个AttributeError报错原因:soup.findAll(text=True)返回的结果本身就是NavigableString类型的文本对象,不存在get_text()方法,直接使用该对象即可获取文本内容。
  2. 第二个报错原因:except后必须填写继承自BaseException的异常类,NavigableString是数据类型不属于异常类,不符合语法要求。

正确解决方法

无需添加异常捕获,直接修改文本取值逻辑即可,优化后的完整代码如下:

import csv
import glob
from bs4 import BeautifulSoup

dataExtracted = []
for filename in glob.glob(r'*.xml'):
    # 指定文件编码避免乱码问题
    with open(filename, 'r', encoding='utf-8') as f_in:
        # 解析XML建议使用lxml-xml模式,匹配XML语法规则更准确
        soup = BeautifulSoup(f_in.read(), 'lxml-xml')
    print(filename)
    for text_content in soup.findAll(text=True):
        # 去除首尾空白字符,过滤纯空白的无效文本
        cleaned_text = text_content.strip()
        if cleaned_text:
            print(cleaned_text)
            dataExtracted.append([filename, cleaned_text])

# 输出CSV使用utf-8-sig编码,避免Excel打开时中文乱码
with open('data.csv', 'w', newline='', encoding='utf-8-sig') as csvfile:
    # 修正quotechar为原生双引号,原代码的"是HTML转义字符,不适用CSV场景
    csv_writer = csv.writer(csvfile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    # 可选写入表头,方便后续查看
    csv_writer.writerow(['文件名', '提取文本'])
    csv_writer.writerows(dataExtracted)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:15:03