首页 > 解决方案 > 字符串中的递增数字 + 1

问题描述

我将python脚本放在一起,它将读取字符串“BatchSequence =“NUMBER INCREMENT HERE”并返回整数。我怎样才能找到某个整数并将其余整数加一但将整数保留在同一之前?它会跳过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"

标签: python

解决方案


我对这个问题的看法:

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,然后值减一。


推荐阅读