当前位置: 首页 > 面试题库 >

使用Python查找和替换XML中的值

养枫涟
2023-03-14
问题内容

我正在寻找使用python编辑XML文件。我想查找并替换标签中的关键字。过去,一位同事建立了XML模板文件,并使用“查找并替换”程序替换了这些关键字。我想使用python查找和将这些关键字替换为值。我一直在自学Elementtree模块,但是在尝试查找和替换时遇到了麻烦。我已经附上了我的XML文件的片段。您将看到一些被%包围的变量(即%SITEDESCR%),这些是我要替换的单词,然后将XML保存到新文件中。任何帮助或建议将是巨大的。

谢谢,迈克

<metadata>
<idinfo>
<citation>
<citeinfo>
 <origin>My Company</origin>
 <pubdate>05/04/2009</pubdate>
 <title>POLYGONS</title>
 <geoform>vector digital data</geoform>
 <onlink>\\C$\ArcGISDevelopment\Geodatabase\PDA_STD_05_25_2009.gdb</onlink>
</citeinfo>
</citation>
 <descript>
 <abstract>This dataset represents the mapped polygons developed from the field data for the %SITEDESCR%.</abstract>
 <purpose>This dataset was created to accompany some stuff.</purpose>
 </descript>
<timeperd>
<timeinfo>
<rngdates>
 <begdate>%begdate%</begdate>
 <begtime>unknown</begtime>
 <enddate>%enddate%</enddate>
 <endtime>unknown</endtime>
 </rngdates>
 </timeinfo>
 <current>ground condition</current>
 </timeperd>

问题答案:

基础:

from xml.etree import ElementTree as et
tree = et.parse(datafile)
tree.find('idinfo/timeperd/timeinfo/rngdates/begdate').text = '1/1/2011'
tree.find('idinfo/timeperd/timeinfo/rngdates/enddate').text = '1/1/2011'
tree.write(datafile)

如果标签名称唯一,则可以缩短路径。此语法可在树中任何深度级别找到第一个节点。

tree.find('.//begdate').text = '1/1/2011'
tree.find('.//enddate').text = '1/1/2011'

另外,请阅读文档,尤其是。在XPath的定位节点的支持。



 类似资料:
  • 问题内容: 我有一个大约40万行的文本文件。我需要将此文本文件导入一个程序,该程序仅接受以空格或制表符分隔的文本文件,但是此文本文件以分号分隔。我要从(Arcmap)导出文本文件的程序中没有选项来更改分隔,并且在文本文件本身中进行查找和替换实际上需要2天。 我已经搜索了一个脚本来执行此操作,但是它们似乎都用空格替换了单词文件的整个LINE,而不是单独替换了每个分号,而给我留了一个空的文本文件。 这

  • 在Atom中,对你文件或者项目中的文本进行查找或者替换,非常快速而且容易。 cmd-F 在缓冲区中查找 cmd-shift-f 在整个项目中查找 如果你执行了这些命令,你屏幕的底部会出现一个“Find and Replace”面板。 你可以按下cmd-F,输入需要搜索的字符串,并且多次按下回车(或者cmd-G,或者“Find Next”按钮)来在当前文件中搜索,循环查找当前文件中的匹配内容。“Fi

  • 问题内容: 我必须搜索一个列表,然后用一个元素替换所有出现的元素。到目前为止,我在代码方面的尝试使我无处可寻,做到这一点的最佳方法是什么? 例如,假设我的列表具有以下整数 我需要将所有出现的数字1替换为值10,所以我需要的输出是 因此,我的目标是将数字1的所有实例替换为数字10。 问题答案:

  • 我正在尝试替换一组字符串。xlsx表(约70k行,38列)。我有一个文件中要搜索和替换的字符串列表,格式如下:- 要搜索的单词在左侧,替换词在右侧(查找“bird produk”,替换为“bird product”)。My.xlsx工作表如下所示:- 我正在寻找最快的解决方案,因为我有大约200个单词在列表中要搜索,和。xlsx文件相当大。为此,我需要使用Python,但我愿意接受任何其他更快的解

  • 我有一些占位符的docx文档。现在我应该用其他内容替换它们,并保存新的docx文档。我从docx4j开始,发现了这个方法: 但这很少起作用,因为通常占位符会在多个文本运行中拆分。 如何解决这个问题?

  • 我试图在表格的第2列中找到所有文本为“0.118”的单元格,并为该行列出命令列表。我还试图从该行中找到的选定文本的第5列中获取值,然后减去我在该行的输入框中输入的值。 我遇到的问题是,它只改变了我找到的“0.118”之一,而不是每行中的所有内容。 我不知道如何搜索选定行的列(5)。 任何帮助都将不胜感激。 非常感谢。