python - 初学者[python]如何获取子元素的属性及其子元素的文本?
问题描述
我希望每个ver
具有“fmc”属性的人都能获取标签内的文本part
。
因此,对于我的示例,仅返回两个版本(30 和 54)
第一个循环不打印任何内容。我需要帮助来改进我正在编写的功能。
#!/usr/bin/python3
import xml.etree.ElementTree as ET
import xml.etree.ElementTree as ET
tree= ET.parse(r'test.xml')
root = tree.getroot()
for ver in root.iter('ver'):
if ver.attrib == 'fmc':
print(ver.attrib) # does not work
for elem in root.iter():
if elem.tag == 'part':
print(elem.text)
文件
<?xml version = "1.0" encoding="UTF-8" standalone="yes" ?>
<corpus>
<ver id="18" etude="EC1_Elec" elec="oui" niveau="1" critere="1.3" type="discours">
<part code="EC1_Elec_IW04_0">Ça existe sur des gros parcs Hlm mais c'est macro.</part>
</ver>
<ver id="30" etude="EC1_Elec" elec="oui" niveau="2" critere="" origine="IW" type="discours" fmc="motivation">
<part code="EC1_Elec_IW01_0">Avant 75 on n'a pas isolé puis après, au fur et à mesure des règlementations.</part>
</ver>
<ver id="54" etude="EC1_Elec" elec="oui" niveau="1" critere="" origine="IW" type="discours" fmc="condition">
<part code="EC1_Elec_IW10_0">Le deuxième boitier, il est où ? s'il y en a un qui est à l'intérieur et qui remplace un bout de l'isolation, il est caché OK.</part>
</ver>
<ver id="897" etude="EC3_Elec" elec="oui" niveau="4" critere="4.1" origine="TR" type="discours">
<part code="EC3_Elec_TR2_1">Avec l'économie d'énergie, on va imposer de plus en plus d'automatismes,</part>
<iwer>Çava influencer la demande pour ce type de solution c'est ça ?</iwer>
<part code="EC3_Elec_TR2_1">Je pense oui</part>
</ver>
</corpus>
解决方案
ver.attrib
返回一个字典。
检查您正在寻找的密钥(即 fmc),然后打印。
if ver.attrib.get('fmc', None):
代码 :
for ver in root.iter('ver'):
if ver.attrib.get('fmc', None):
print(ver.attrib['fmc']) # it does work
for elem in root.iter():
if elem.tag == 'part':
print(elem.text)
已修复错误的完整代码:
import xml.etree.ElementTree as ET
arbre = ET.parse(r'abc.xml')
root = arbre.getroot()
for ver in root.iter('ver'):
if ver.attrib.get('fmc', None):
print(ver.attrib['fmc'])
for elem in root.iter():
if elem.tag == 'part':
print(elem.text)
推荐阅读
- c - 用户输入超过 1 个项目并计算总价
- ruby-on-rails - 如何获取每个元素的嵌套属性到 Ruby on Rails 中的数组?
- c# - 带有时区 C# 的时间戳格式
- node.js - 无服务器框架:未找到无服务器错误功能:
- javascript - 在 FlatList(native) 上呈现数据的错误 - React Native
- java - 出现异常如何自动重启springboot应用
- laravel - 上传本地服务器 - 找不到类 'Illuminate\Support\Facades\Input'
- javascript - Javascript 和 Python 之间的差异
- linux - 在 Linux 中使用 grep 和 AWK 命令获取文件列表
- ubuntu - VSCode 调试器不使用递归函数