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

如何使用BeautifulSoup获取包含cRef属性的所有元素?

问题与解决方案

我有一个XML文件,已通过以下代码用BeautifulSoup解析:

import bs4 as bs
with open('interim.xml', 'r') as f:
    file = f.read()

soup = bs.BeautifulSoup(file, 'lxml')

我的需求是获取所有包含cRef属性的元素及其内容,无论元素的type属性是否为"biblical"。最初尝试用Refs = soup.find_all(attrs={'type':'biblical'})筛选元素,但发现存在type为"biblical"但无cRef的元素,而所有带cRef的元素才是我的目标。

方法确认

你使用Refs = soup.find_all(attrs={'cref':True})的方法是完全正确的。在BeautifulSoup中,当指定属性值为True时,会匹配所有存在该属性的元素,不管属性的具体取值是什么,正好满足你筛选所有带cRef属性元素的需求。

属性值提取

后续通过Refs[i].get('cref')获取属性值的写法也是正确的。另外也可以直接使用Refs[i]['cref']来提取,但get()方法更安全——当元素意外没有该属性时,get()会返回None,而直接索引会抛出异常。

预期输出示例

[<ref cref="Gn_1,26-27" type="biblical">Gen 1,26f.</ref>, <ref cref="Sir_15,14" type="biblical">Sir 15,14</ref>, <ref cref="Rm_5,12" type="biblical">Röm 5,12</ref> ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:55:16