【问题标题】:Notepad ++ Python script - Calculate in XML Numbers with decimalNotepad ++ Python 脚本 - 在 XML 中计算带小数的数字
【发布时间】:2020-02-11 18:07:12
【问题描述】:

我有一个带有 a.e. 的 XML。

    Pos="0.003"
    Pos="100.002"
    Pos="10.2"
    Pos="3.43"
    Pos="0.999"

现在我希望每个带有 +0.007 的标签。我用 python 脚本尝试了它,但没有任何反应。 我做错了什么:(

def calculate(match):
    return 'Pos="\d{1,4}[.]\d{1,4}"' % (match.group(1), complex(match.group(2))+0.007)

    editor.rereplace('Pos="(\d{1,4}[.]\d{1,4})"', calculate)

结果应该是那么

    Pos="0.010"
    Pos="100.009"
    Pos="10.207"
    Pos="3.437"
    Pos="1.006"

【问题讨论】:

    标签: python xml notepad++


    【解决方案1】:

    我不明白您为什么要使用 2 个组和 complex,如果您想在每个 pos 中添加 0.007,只需这样做:

    import re
    def calculate(match):
        return 'Pos="%s"' % str(float(match.group(1))+0.007)
    
    editor.rereplace('Pos="(\d{1,4}[.]\d{1,4})"', calculate)
    

    【讨论】:

    • 这就是解决方案。谢谢!现在我也不知道为什么我用了 2 组。此处使用 Complex 是因为我认为该值不会因格式化而改变。非常感谢!
    【解决方案2】:

    问题是您的正则表达式只有一组,应该是:

    editor.rereplace('Pos="(\d{1,4})[.](\d{1,4})"', calculate)
    

    另外在计算中你没有正确地进行格式化:

    def calculate(match):
        return 'Pos="%s[.]%s"' % (match.group(1), complex(match.group(2))+0,007)
    

    【讨论】:

    • @Patrick.R “不起作用”是指什么都没有改变,还是意味着它被改成了错误的东西?
    • 对不起。这意味着值不会改变。我将代码 0,007 更改为 0.007。我复制粘贴出错了。
    猜你喜欢
    • 1970-01-01
    • 2012-09-19
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    相关资源
    最近更新 更多