【问题标题】:Replace number in XML by using argparse使用 argparse 替换 XML 中的数字
【发布时间】:2016-07-02 04:41:07
【问题描述】:

假设我从我的终端给出了 参数: python xyz.py --values [ 2 4 5 ]。我想获取这些数字并在 XML 文件中替换它们,我该怎么做?

我的 XML 文件如下所示:

<DP>
  <NVP>
     <CHECK>NameX_1</CHECK>
     <DIGIT>3</DIGIT>
  </NVP>
  <NVP>
     <CHECK>NameX_2</CHECK>
     <DIGIT>20</DIGIT>
  </NVP>
  <NVP>
     <CHECK>NameX_2</CHECK>
     <DIGIT>100</DIGIT>
</DP>

当用户给出参数时,该 XML 中的数字应该被替换。所以3 -&gt; 2, 20 -&gt; 42 -&gt; 5

for digits in tree.findall(getDigit.format(namespace)):
    matchCheck = digits.find('{http://something.com}CHECK').text 
        if matchCheck == mathcName:
            digitNumber = digits.find('{http://something.com}DIGIT').text
            convertToString = ' '.join([str(mystring) for mystring in args.value]) #Convert to string

            digits.find('{http://something.com}DIGIT').text = convertToString #This allows the script to changes the digit in the xml file
            tree.write("test.xml", encoding='utf-8', xml_declaration=True)
        else: print"NO MATCHES\n"

您可以在此处找到其余代码:Code

【问题讨论】:

  • 我们在哪里可以找到其余的代码?
  • 您正在使用 {http://something.com} 之类的命名空间 - 这些与您显示的 XML 示例不匹配,因为它没有指定命名空间。
  • Err,你的逻辑不对 - 认为应该是:搜索一个 NVP 标签,然后 within 该标签确认有一个 CHECK 并修改 DIGIT跨度>
  • 抱歉忘记粘贴其余代码的链接... [stackoverflow.com/questions/36015120/…
  • @barny 我没有包含整个 XML,这只是其中的一部分。 XML 有一个根,其中包含“{something.com}”

标签: python xml argparse


【解决方案1】:

不清楚您的问题是关于代码的argparse 结尾还是xml 结尾。

但是如果你定义了

parser = argparse.ArgumentParser()
parser.add_argument('--values', nargs='+')
args = parser.parse_args()
values = args.values
print(values)

然后调用(无括号)

python xyz.py --values 2 4 5

应该打印

[2, 4, 5]

values 将是一个包含 3 个数字的列表。你对这三个数字的处理是xml 编辑代码部分的责任。

【讨论】:

    猜你喜欢
    • 2019-01-13
    • 2016-12-23
    • 1970-01-01
    • 2013-06-22
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    相关资源
    最近更新 更多