美しいスープにreplaceWithを使用しながら、動的にタグを指定します

StackOverflow https://stackoverflow.com/questions/891434

  •  23-08-2019
  •  | 
  •  

質問

以前、私は<尋ねたのhref = "https://stackoverflow.com/questions/886111/can-i-use-re-sub-or-regexobject-sub-to-replace-text-in-a-subgroup 「>このの質問をして、ローカルにいくつかの協議の後、私は一緒に行くことにしました。

このBeautifulSoupのコード例を、戻りました
>>> from BeautifulSoup import BeautifulStoneSoup
>>> html = """
... <config>
... <links>
... <link name="Link1" id="1">
...  <encapsulation>
...   <mode>ipsec</mode>
...  </encapsulation>
... </link>
... <link name="Link2" id="2">
...  <encapsulation>
...   <mode>udp</mode>
...  </encapsulation>
... </link>
... </links>
... </config>
... """
>>> soup = BeautifulStoneSoup(html)
>>> soup.find('link', id=1)
<link name="Link1" id="1">
<encapsulation>
<mode>ipsec</mode>
</encapsulation>
</link>
>>> soup.find('link', id=1).mode.contents[0].replaceWith('whatever')
>>> soup.find('link', id=1)
<link name="Link1" id="1">
<encapsulation>
<mode>whatever</mode>
</encapsulation>
</link>

これの唯一の問題は、例は、ハードコードタグ値(ここでは「モード」)を有することであり、Iは、指定された「リンク」タグ内の任意のタグを指定できるようにする必要があります。単純な変数置換が動作するようには思えません。

役に立ちましたか?

解決

あなたは今getattr(soup.find('link', id=1), sometag)にハードコードされたタグを持っている。ここで、

soup.find('link', id=1).modeをお試しください! - getattrは、名前の文字列変数として保持されている属性を取得するためのPythonの方法で、後にすべての

他のヒント

getattrを使用する必要はありません。

sometag = 'mode'
result = soup.find('link', id=1).find(sometag)
print result
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top