首页 > 解决方案 > Python - 复制元素的属性并粘贴到另一个文本文件

问题描述

我有一个像这样的xml文件

<xml>
  <canvas id="123">
      <child name="somechild" id="1"/>
  </canvas>
  <canvas id="124">
      <child name="somechild" id="2"/>
  </canvas>
  <canvas id="125">
      <child name="somechild" id="3"/>
  </canvas>
</xml>

我想复制画布的属性 id 的值,它基本上是里面<canvas id="COPY THIS VALUE"> 的内容,并将它们写在一个新的文本文件中,该文件将像这样列出所有这些:

123, 1234, 214334, 34234, 34234

感谢您的帮助!

编辑 - - - - -

到目前为止,我已经尝试过这个我从另一个答案中看到的,但它复制了整个画布 ID 行,而不是只复制了 ID 内的内容

with open('file.xml') as myfile, open('fileids.xml', 'w') as outfile:
content = myfile.read()
text = re.search(r'canvas id=".*?">', content, re.DOTALL).group()
outfile.write(text)

标签: pythonxmlcanvastext

解决方案


您可以使用内置xml.etree.ElementTree模块:

import xml.etree.ElementTree as ET
xml = ET.fromstring('''<xml>
  <canvas id="123">
      <child name="somechild" id="1"/>
  </canvas>
  <canvas id="124">
      <child name="somechild" id="2"/>
  </canvas>
  <canvas id="125">
      <child name="somechild" id="3"/>
  </canvas>
</xml>''')
print([node.attrib['id'] for node in xml.findall('.//canvas')])

这输出:

['123', '124', '125']

使用列表,您可以轻松地将项目写入文件。


推荐阅读