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

しかし、last_name がないと問題が発生します。詰まるからです。フィードにある場合もあれば、ない場合もあります。窒息しないようにするにはどうすればよいですか?

try/except ステートメントを使用したくありません。また、if/else ステートメントも使用したくありません。(これらのステートメントがある場合、すでに非常に長いコードの行が2倍になるため)。

「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)

これら 2 つのオーバーヘッドは、最初のものと同じではありません。ifただし、シンプルな方がこれらのどれよりも読みやすいと思います。

于 2010-02-07T01:02:05.893 に答える