为了账号安全,请及时绑定邮箱和手机立即绑定

在python中使用美丽的汤从xml文件中提取特定标签

在python中使用美丽的汤从xml文件中提取特定标签

慕的地6264312 2022-12-20 15:24:49
我有一个看起来像这样的 xml 文件(让我们调用它是 abc.xml)。<?xml version="1.0" encoding="UTF-8"?><properties>  <product name="XYZ" version="123"/>  <application-links>    <application-links>      <id>111111111111111</id>      <name>Link_1</name>      <primary>true</primary>      <type>applinks.ABC</type>      <display-url>http://ABC.displayURL</display-url>      <rpc-url>http://ABC.displayURL</rpc-url>    </application-links>  </application-links></properties>我的 python 代码是这样的f = open ('file.xml', 'r')from bs4 import BeautifulSoupsoup = BeautifulSoup(f,'lxml')print(soup.product)for applinks in soup.application-links:    print(applinks)打印以下内容<product name="XYZ" version="123"></product>Traceback (most recent call last):  File "parse.py", line 7, in <module>    for applinks in soup.application-links:NameError: name 'links' is not defined请你能帮我理解如何打印包含破折号/连字符'-'的标签的行
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

我不知道beautifulsoup这里是否是最佳选择,但我真的建议ElementTree像这样在 python 中使用该模块:


>>> import xml.etree.ElementTree as ET

>>> root = ET.parse('file.xml').getroot()

>>> for app in root.findall('*/application-links/'):

...     print(app.text)

111111111111111

Link_1

true

applinks.ABC

http://ABC.displayURL

http://ABC.displayURL

因此,要打印<name>标签内的值,您可以这样做:


>>> for app in root.findall('*/application-links/name'):

...     print(app.text)

Link_1


查看完整回答
反对 回复 2022-12-20
  • 1 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号