Python BeautifulSoup-检查值
我正在将BeautifulSoup4与Python2.7结合使用来解析一些XML文件。我使用BS的原因是,我知道文档将包含无效的标题、不一致的编码等,尽管我不确定lxml等无法处理 我正在检查某些元素是否有值,所以Python BeautifulSoup-检查值,python,beautifulsoup,Python,Beautifulsoup,我正在将BeautifulSoup4与Python2.7结合使用来解析一些XML文件。我使用BS的原因是,我知道文档将包含无效的标题、不一致的编码等,尽管我不确定lxml等无法处理 我正在检查某些元素是否有值,所以 if soup.person.identifier.string is None: # reject file 只要XML是: <root> <person> <identifier><identifier&
if soup.person.identifier.string is None:
# reject file
只要XML是:
<root>
<person>
<identifier><identifier>
</person>
</root>
但这似乎也有点冗长
如果我用的是lxml,我会这么做
if len(root.xpath('person/identifier/text()') == 0
两者都可以处理。可能类似于:
items=[汤中的项目对应项目。如果item.text==“”,则查找所有(name='somethingelse')。
前
导入bs4
string=”“”
哈哈
"""
soup=bs4.BeautifulSoup(字符串'lxml')
items=[汤中项目的项目。如果item.text==“”,则查找所有(name='somethingelse')]
输出:[]
如果找不到,它也不会断开,可能类似于:
items=[汤中的项目对应项目。如果item.text==“”,则查找所有(name='somethingelse')。
前
导入bs4
string=”“”
哈哈
"""
soup=bs4.BeautifulSoup(字符串'lxml')
items=[汤中项目的项目。如果item.text==“”,则查找所有(name='somethingelse')]
输出:[]
如果找不到,它就不会坏。我最后做的是-
def bv(value_string, locals):
try:
result = eval(value_string, globals(), locals)
except AttributeError:
result = None
return result
bv('person.identifier.string',locals())
这是可行的,但我怀疑有更好的方法来做到这一点。我最后做的是-
def bv(value_string, locals):
try:
result = eval(value_string, globals(), locals)
except AttributeError:
result = None
return result
bv('person.identifier.string',locals())
这是可行的,但我怀疑有更好的方法来做到这一点。我不认为这是我想要做的。我已经用更相关的名称重新编写了示例,希望能让它更清楚。基本上,我需要对文档进行大量检查,以查看是否提供了所需的信息,然后进一步检查其有效性(如果提供了)。嗯,也许我还是有点困惑,但是我创建的
items
变量有一个列表,其中列出了您试图用空白文本查找的任何元素。如果没有元素,它将不会抛出错误,而是为空。因此,如果您想查看是否找到任何东西,您只需检查len(items)
,我不认为这是我正在尝试的。我已经用更相关的名称重新编写了示例,希望能让它更清楚。基本上,我需要对文档进行大量检查,以查看是否提供了所需的信息,然后进一步检查其有效性(如果提供了)。嗯,也许我还是有点困惑,但是我创建的items
变量有一个列表,其中列出了您试图用空白文本查找的任何元素。如果没有元素,它将不会抛出错误,而是为空。因此,如果您想查看是否找到了任何内容,您只需检查len(items)
def bv(value_string, locals):
try:
result = eval(value_string, globals(), locals)
except AttributeError:
result = None
return result