我試圖使用BeautifulSoup來解析XML文件。其中一個元素有一個連字符:分配代碼在Python中,如何引用包含連字符的XML標記
如何訪問它?我試過了:
soup.distribution-code
soup."distribution-code" (tried single quotes too)
soup.[distribution-code]
但這些都沒有工作。
我試圖使用BeautifulSoup來解析XML文件。其中一個元素有一個連字符:分配代碼在Python中,如何引用包含連字符的XML標記
如何訪問它?我試過了:
soup.distribution-code
soup."distribution-code" (tried single quotes too)
soup.[distribution-code]
但這些都沒有工作。
可以使用常規的Python語法訪問由屬性引用非連元素,即obj.name
,然而,-
是沒有使用的語法(Python的把它當作「減」運算符)時一個有效的字符,因此你不能通過該方法訪問這些元素。
相反,使用soup.find()
或soup.find_all()
:
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<thing><id>1234</id><distribution-code>555444333</distribution-code></thing>')
>>> soup.thing
<thing><id>1234</id><distribution-code>555444333</distribution-code></thing>
>>> soup.id
<id>1234</id>
>>> soup.distribution-code
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'code' is not defined
>>> soup.find('distribution-code')
<distribution-code>555444333</distribution-code>
或者,如chepner's comment指出的那樣,你可以使用getattr()
和setattr()
獲取和設置包含連字符的屬性。我認爲soup.find()
是訪問這些元素的更常用的方法。
您是否嘗試過'湯['distribution-code']'? –
我想你真的需要[this](http://www.crummy.com/software/BeautifulSoup/bs4/doc/)。 –
這給了我這個錯誤:「回溯(最近通話最後一個): 文件‘’,1號線,在 湯[」分配碼'] 文件「/usr/lib/python2.7/dist- packages/bs4/element.py「,第834行,在__getitem' –
WebUserLearner