python - 字符串中的递增数字 + 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"
解决方案
我对这个问题的看法:
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
,然后值减一。
推荐阅读
- c# - C#访问另一个进程的配置(跨域访问)
- android-studio - 访问手机存储以在使用 webview 开发的 android 应用程序中上传文件和照片
- c# - Dispatcher.Invoke() 在退出的处理程序中重新启动进程挂起
- web - 网站移动友好性批量检查 - GA 集成?
- java - Recyclerview Onclick() 没有打开所需的活动
- tensorflow - 由于AssignVariableOp,使用tensorflow加载冻结图时出错
- c# - Azure 持久函数中的 StackOverFlowException
- python - Plotly go.Choropleth 在前端没有正确渲染
- mysql - 如果状态不活跃,如何使用 mysql for vb.net 保存数据
- angular - 角度计数中的计时器不正确