gpt4 book ai didi

python - 从 Beautifulsoup 的标签 "extract"中提取内容

转载 作者:行者123 更新时间:2023-11-28 17:42:44 27 4
gpt4 key购买 nike

我有一个 xml 语料库,其中一个标签名为 extract <EXTRACT> .但该术语是 Beautifulsoup 中的关键字。我怎样才能提取这个标签的内容。当我写 entry.extract.text它返回错误,当我使用 entry.extract , 提取全部内容。

据我对 Beautifulsoup 的了解,它执行标签的大小写折叠。如果有什么方法可以克服这个问题,它也可能对我有帮助。

注意:目前我用以下方法解决了这个问题。

extra = entry.find('extract')
absts.write(str(extra.text))

但我想知道是否有任何方法可以像我们使用其他标签一样使用它 entry.tagName

最佳答案

根据 BS 源代码,tag.tagname 实际上在后台调用了 tag.find("tagname")。下面是 Tag 类的 __getattr__() 方法:

def __getattr__(self, tag):
if len(tag) > 3 and tag.endswith('Tag'):
# BS3: soup.aTag -> "soup.find("a")
tag_name = tag[:-3]
warnings.warn(
'.%sTag is deprecated, use .find("%s") instead.' % (
tag_name, tag_name))
return self.find(tag_name)
# We special case contents to avoid recursion.
elif not tag.startswith("__") and not tag=="contents":
return self.find(tag)
raise AttributeError(
"'%s' object has no attribute '%s'" % (self.__class__, tag))

看到它完全基于 find(),所以在您的情况下使用 tag.find("extract") 非常好:

from bs4 import BeautifulSoup


data = """<test><EXTRACT>extract text</EXTRACT></test>"""
soup = BeautifulSoup(data, 'html.parser')
test = soup.find('test')
print test.find("extract").text # prints 'extract text'

此外,您可以使用 test.extractTag.text,但它已被弃用,我不推荐它。

希望对您有所帮助。

关于python - 从 Beautifulsoup 的标签 "extract"中提取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22110431/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com