字符串中的递增数字+1

时间:2019-06-07 18:40:11

标签: python

我将python脚本放在一起,它将读取字符串“ BatchSequence =“ NUMBER INCREMENT HERE”,然后返回整数。我如何找到某个整数并将其余的整数加1,但在整数之前保留整数呢? 3跳到5。我希望它跳到3、4、5。

另外, 一旦我弄清楚了这个脚本。如何用新的脚本编号替换原始文本文件的编号?我需要写一个新文件吗?

我尝试将数字增加一个,但它从头开始。

我尝试过的代码:

import re

file = '\\\MyDataNEE\\user$\\bxt058y\\Desktop\\75736.oxi.error'

counter = 0
for line in open(file):
    match = re.search('BatchSequence="(\d+)"', line)
    if match:
        print(int(match.group(1)) + 1)

原始代码:

import re

file = 'FILENAME HERE'

counter = 0
for line in open(file):
    match = re.search('BatchSequence="(\d+)"', line)
    if match:
        print(match.group(1))

当前:

BatchSequence="1"
BatchSequence="2"
BatchSequence="3"
BatchSequence="5"
BatchSequence="6"
BatchSequence="7"
BatchSequence="8"

新输出应为:

BatchSequence="1"
BatchSequence="2"
BatchSequence="3"
BatchSequence="4"
BatchSequence="5"
BatchSequence="6"
BatchSequence="7"

1 个答案:

答案 0 :(得分:0)

我对这个问题的看法:

txt = '''BatchSequence="1"
BatchSequence="2"
BatchSequence="3"
BatchSequence="5"
BatchSequence="6"
BatchSequence="7"
BatchSequence="8"'''

import re

def fn(my_number):
    val = yield
    while True:
        val = yield str(val) if val < my_number else str(val-1)

f = fn(4)
next(f)
s = re.sub(r'BatchSequence="(\d+)"', lambda g: 'BatchSequence="' + f.send(int(g.group(1))) + '"', txt)

print(s)

打印:

BatchSequence="1"
BatchSequence="2"
BatchSequence="3"
BatchSequence="4"
BatchSequence="5"
BatchSequence="6"
BatchSequence="7"

函数fn(my_number)将返回相同的值,直到达到my_number,然后将值减1。