批量XML转TXT并提取标题与名称:Python代码无输出问题求助
解决思路
1. 修复文本属性拼写错误
你的代码里用了.txt获取标签文本,但ElementTree中正确的属性是.text——这是最直接的错误。另外直接调用.text前最好先判断标签是否存在,避免抛出AttributeError。
2. 检查XML结构与标签匹配度
- 确认XML中确实存在
page、titles、v_name这些标签,注意标签名大小写敏感,比如Page和page会被视为不同标签; - 如果XML包含命名空间(比如根标签带
xmlns="xxx"),findall和find需要指定命名空间参数:ns = {'prefix': 'http://your-namespace-url'} for page in root.findall('prefix:page', ns): titles = page.find('prefix:titles', ns)
3. 验证文件路径有效性
检查file_name对应的路径是否正确:
- 若用相对路径,确认脚本运行的当前目录和XML文件所在目录一致;
- 优先使用绝对路径避免路径歧义;
- 可以加文件存在性检查,提前排查文件找不到的问题:
import os if not os.path.exists(r"file_name"): print("文件不存在,请检查路径")
4. 确认标签层级关系
如果page标签不是直接在根节点下,需要调整findall的路径,比如root.findall('./subnode/page'),或者用root.iter('page')遍历所有层级的page标签。
5. 处理空文本或缺失标签的情况
如果XML中某些page没有titles或v_name标签,page.find()会返回None,直接访问.text会报错,所以要先判断标签是否存在再获取文本:
titles_elem = page.find('titles') print("Titles: ", titles_elem.text.strip() if titles_elem is not None else "无标题")
内容的提问来源于stack exchange,提问作者Learner-2022
相关产品推荐
相关产品推荐

