Print 'element' in list 返回一个 <Element 'element 1' at 0x0000013C6D4B9270>
Posted
技术标签:
【中文标题】Print \'element\' in list 返回一个 <Element \'element 1\' at 0x0000013C6D4B9270>【英文标题】:Print 'element1' in list returms an <Element 'element1' at 0x0000013C6D4B9270>Print 'element' in list 返回一个 <Element 'element 1' at 0x0000013C6D4B9270> 【发布时间】:2021-12-31 14:56:45 【问题描述】:我最近开始学习 python,但我的代码有问题。 我正在尝试使用具有以下形式的 elementtree 解析 xml:
<UNHEATED_ROWS>6</UNHEATED_ROWS>
<UNHEATED1 rid="1">
</UNHEATED1>
<UNHEATED2 rid="1">
</UNHEATED2>
<UNHEATED3 rid="1">
</UNHEATED3>
<UNHEATED4 rid="1">
</UNHEATED4>
<UNHEATED5 rid="1">
</UNHEATED5>
<UNHEATED6 rid="1">
用这个:
for i in range root.iter('UNHEATED_ROWS'):
uheatedzones = UNHEATED_ROWS.text
for j in range uheatedzones:
uzones.append("UNHEATED" + str(j+1)):
for k in range(int(uheatedzones)):
for uzones[k] in root.iter("UNHEATED%s" % (k+1)):
print(uzones[k])
而不是 UNHEATED1,UNHEATED2... 我希望得到我得到的印刷品
我的代码有什么问题? 谢谢
【问题讨论】:
【参考方案1】:谢谢你的回答。
<UNHEATED1 rid="1">
<un_parameter1>82.8</un_parameter1>
<un_parameter2>123.3720</un_parameter2>
<ENVELOPE rid="1">
<opaque_rows>17</opaque_rows>
<transparent_column5>0.600,2.200,0.600,</transparent_column5>
<transparent_column6>Α1,Α2,Α10,</transparent_column6>
>
</ENVELOPE>
</UNHEATED1>
每个 UNHEATED 都有类似的结构,我想访问所有 UNHEATED,这就是我使用循环的原因
【讨论】:
【参考方案2】:要获取单个元素的文本,不要使用任何循环。 改用:
root.findtext('UNHEATED_ROWS')
但是请注意,返回的值是一个字符串,而不是整数。
您的代码中的另一个缺陷是str(j+1)
。
第一个错误是 j 是 Element 类的对象 并且其转换为字符串不会返回其文本。
第二个错误是j+1
,即你试图将1添加到这个对象。
要正确处理每个 UNHEATED… 元素,您可以例如使用 root.iter() (不带参数)并在循环中检查标签名称是否以 “UNHEATED”,然后它包含一个数字(省略 UNHEATED_ROWS 元素)。 您必须导入 re 模块。
如果你想访问一个元素的属性,使用 attrib 方法 一个元素,它返回一个字典 (attr_name: attr_value)。
所以示例循环可以是:
i = 0
for it in root.iter():
if re.match(r'UNHEATED\d', it.tag):
i += 1
print(f'i: it.tag: it.attrib["rid"]')
对于您的源 XML,它会打印:
1: UNHEATED1: 1
2: UNHEATED2: 1
3: UNHEATED3: 1
4: UNHEATED4: 1
5: UNHEATED5: 1
6: UNHEATED6: 1
还要注意,我在上面的循环中没有使用it.text
,因为每个
UNHEATED... 元素没有文本,在这种情况下 text 方法返回
无。
【讨论】:
请看我的回答,我无法将其发布为评论。谢谢以上是关于Print 'element' in list 返回一个 <Element 'element 1' at 0x0000013C6D4B9270>的主要内容,如果未能解决你的问题,请参考以下文章
[Groovy] How to check if element in groovy array/hash/collection/list?
How to add elements to a List in Scala
[React] Return a list of elements from a functional component in React
RuntimeError: each element in list of batch should be of equal size