Python BeautifulSoup-检查值

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&

我正在将BeautifulSoup4与Python2.7结合使用来解析一些XML文件。我使用BS的原因是,我知道文档将包含无效的标题、不一致的编码等,尽管我不确定lxml等无法处理

我正在检查某些元素是否有值,所以

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