我正在使用 Python xml.etree.ElementTree 編輯 XML 檔案。這是一個簡單的檔案示例:
<root>
<sub1>1</sub1>
<sub2>2</sub2>
</root>
我想洗掉所有根子元素。當我使用
...
for child in root:
root.remove(child)
...
'remove' 方法只洗掉第一個子元素。但隨著
...
for child in root.getchildren():
root.remove(child)
...
它適用于所有子元素。為什么會這樣?它是一些迭代器功能,還是我需要了解更多關于“洗掉”方法的資訊?
uj5u.com熱心網友回復:
是的,如果您使用它是一個迭代器,for child in root:
并且不建議使用迭代器方法從其容器中洗掉專案。您應該為您的回圈生成一個串列。
在您的第一個洗掉操作(使用迭代器)中,它實際上洗掉了所有奇數子元素(索引 0、2、4、..)并將所有偶數子元素留在根元素中。您可以使用一個簡單的串列來嘗試該行為:
l = [1,2,3,4,5,6]
for x in l:
l.remove(x)
print (l)
它輸出
[2, 4, 6]
您可以通過添加一個元素來嘗試使用您的 XML <sub3>,并觀察類似的結果。
根據此處的官方變更日志,該getchildren方法已被棄用。
建議使用:
for child in list(root):
# do something
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/460951.html
