Notepad ++ Python script - Вычислять в числах XML с десятичной дробью - PullRequest
1 голос
/ 15 октября 2019

у меня есть XML с ae

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

, теперь я хочу, чтобы каждый тег с get +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"

Ответы [ 2 ]

1 голос
/ 15 октября 2019

Я не понимаю, почему вы используете 2 группы и complex, если вы хотите добавить 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)
0 голосов
/ 15 октября 2019

Проблема в том, что у вашего регулярного выражения есть только одна группа, вместо этого она должна быть:

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)
...