0

我正在使用BeautifulSoup来解析 XML:

xml = """<person>
<first_name>Matt</first_name>
</person>"""

soup = BeautifulStoneSoup(xml)
first_name = soup.find('first_name').string
last_name = soup.find('last_name').string

但是当没有姓氏时我有一个问题,因为它会窒息。有时饲料有它,有时它没有。如何防止它窒息?

我不想使用 try/except 语句。我也不想使用 if/else 语句。(因为如果我有这些语句,它会使已经很长的代码行加倍)。

如果没有“last_name”,有没有办法只返回“None”?

4

1 回答 1

4
last_name = soup.find('last_name') and soup.find('last_name').string

非常愚蠢,但它确实符合您同样愚蠢的限制(否if)。少一点傻:

last_name_node = soup.find('last_name')
last_name = last_name_node and last_name_node.string

和:

last_name = getattr(soup.find('last_name'), 'string', None)

这两个没有与第一个相同的开销。不过,我认为 simpleif比其中任何一个都更具可读性。

于 2010-02-07T01:02:05.893 回答