python - Python:如果没有 XML 标记,则打印“空白”以及输出
问题描述
data="<database>
<zone1>
<name>
<firstname>John</firstname>
<lastname>cena</lastname>
<job>Administrator</job>
<location>sunnyvale</location>
<age>19</age>
</name>
</zone1>
<zone2>
<name>
<firstname>mark</firstname>
<job>Agent</job>
<location>Bangalore</location>
<age>22</age>
</name>
</zone2>
<zone3>
<name>
<firstname>patrick</firstname>
<lastname>phillips</lastname>
<job>Developer</job>
<location>Philadelphia</location>
<age>28</age>
</name>
</zone3>
<zone4>
<name>
<firstname>patrick</firstname>
<job>Developer</job>
<location>Philadelphia</location>
<age>28</age>
</name>
</zone4>
</database>"
import requests
from bs4 import BeautifulSoup
import lxml
soup = BeautifulSoup(data,lxml')
last_name=[v.get_text() if soup.find_all('lastname') else 'blank' for v in soup.find_all('lastname')]
print (last_name)
这是上述代码的输出。
['塞纳','菲利普斯']
上面的代码有什么问题?有人告诉我上面的代码需要改变什么吗?我想要下面的输出。(即如果 XML 标记不存在,则应添加“空白”)
['cena','空白','菲利普斯','空白']
解决方案
尝试:
from bs4 import BeautifulSoup
import lxml
soup = BeautifulSoup(data,'lxml')
last_name=[v.find('lastname').get_text() if v.find('lastname') else 'blank' for v in soup.find_all('name')]
print (last_name)
- 查找所有
name
标签 -->soup.find_all('name')
- 检查是否
name
有lastname
标签 -->if v.find('lastname')
推荐阅读
- html - Vue JS v-for循环显示图片,字符串插值导致错误
- python - 这段代码的 pygame 部分有什么问题?
- python - 如何使用 Flask-connexion 和 swagger-2.0 API 指定用于验证基本身份验证的函数
- apache-flink - Flink - RocksDB 中的 localdir 配置是什么?
- linux - 如何允许多个用户阅读 Letsencrypt 证书
- android - Glide 未加载托管在 s3 上的图像
- localhost - WAMP 拒绝与 localhost 的移动连接
- php - 使用 laravel snappy 时调用未定义的方法 niklasravnsborg\LaravelPdf\Pdf::setOption()
- r - R studio中的IF ELSE函数
- flutter - Flutter 无法连接 iOS 模拟器