Python BeautifulSoup XML,AttributeError:无法设置属性,如何设置为文本属性?
Posted
技术标签:
【中文标题】Python BeautifulSoup XML,AttributeError:无法设置属性,如何设置为文本属性?【英文标题】:Python BeautifulSoup XML, AttributeError: can't set attribute, How to set to text attribute? 【发布时间】:2018-08-30 22:55:08 【问题描述】:我的 Xml 代码如下所示
<!-- ************************************************************************ -->
<group title="Test procedure FBlock ablock">
<case ident="Init" title="TS01 Activate" name="TC_Start_Application">
<param name="Min" type="float">0.50
</param>
<param name="Max" type="float">5.00
</param>
</case>
</group>
现在我可以在 python 中使用 Beautiful soup 库读取“param”的文本属性,如下所示:
TTgroup = re.compile('Test someword (.*?): .*')
with open(outFile) as fp:
soup = BeautifulSoup(fp, "lxml")
groups=soup.find_all("group")
for group in groups:
FBlk = group["title"]
FBlk=TTgroup.search(FBlk)
cases = group.find_all("case")
for case in cases:
casetitle = case["title"]
method=str(re.sub(r'TS.*? ', '',casetitle))
Fkt=method.split('.') # split at .
Fkt=str(Fkt[0]) # Function ID from case
method=re.sub('[ ()<># .,-]', '', method)# Remove unwanted characters
method=method.replace('0x', 'x') # Replace 0x to x
Params = case.find_all("param")
for Param in Params:
if Param["name"] =="Min":
Param.text ="&"+Param["name"]+";<!--"+Param.text+"-->"
但是,我无法更改 param 的 text 属性,并收到此错误消息
Param.text ="&"+Param["name"]+";<!--"+Param.text+"-->"
AttributeError: can't set attribute
【问题讨论】:
【参考方案1】:text
属性是只读的,因此您无法修改它,但您可以修改 string
属性。
所以如果替换.text
就可以改变Tag
的文字内容,
Param.text ="&"+Param["name"]+";<!--"+Param.text+"-->"
.string
,
Param.string ="&"+Param["name"]+";<!--"+Param.text+"-->"
【讨论】:
以上是关于Python BeautifulSoup XML,AttributeError:无法设置属性,如何设置为文本属性?的主要内容,如果未能解决你的问题,请参考以下文章
python beautifulsoup 解析 xml 速度很慢
python爬虫之html解析Beautifulsoup和Xpath