向re.search Python的结果中添加变量并替换
我试图在某些字符之后和某些字符之前找到一个整数,并在其中添加一个整数 我有这个向re.search Python的结果中添加变量并替换,python,python-3.x,Python,Python 3.x,我试图在某些字符之后和某些字符之前找到一个整数,并在其中添加一个整数 我有这个 import re filedata = None with open('doc.txt', 'r') as file : filedata = file.read() count = int(filedata.count('~')) # 454 m = re.search('~RR\*(\d+)\*', filedata); print(m) with open('docresult.txt', 'w'
import re
filedata = None
with open('doc.txt', 'r') as file :
filedata = file.read()
count = int(filedata.count('~')) # 454
m = re.search('~RR\*(\d+)\*', filedata); print(m)
with open('docresult.txt', 'w') as file:
file.write(filedata)</pre>
重新导入
filedata=None
打开('doc.txt','r')作为文件:
filedata=file.read()
count=int(filedata.count('~'))#454
m=重新搜索(“~RR\*(\d+)\*”,filedata);打印(m)
打开('docresult.txt','w')作为文件:
file.write(文件数据)
所以我要做的就是把count
添加到~RR\*XXX*
之间的任何数字上,然后替换它
因此,如果一开始我有~RR*120*
,我的计数是50,我希望新文件显示~RR*170*
我也尝试过使用
re.compile
,但没有结果。不确定您的计算结果(例如,120+50如何产生175),但这里有一种方法,当整数与奇怪的~RR**
模式匹配时,可以使用带有替换函数而不是替换字符串的re.sub
import re
global count
count = 50
filedata = "hello ~RR*120* foo ~RR*40*"
def repl_function(m):
return str(int(m.group(1))+count+len(m.group(1)))
filedata = re.sub('(?<=~RR\*)(\d+)(?=\*)', repl_function, filedata)
print(filedata)
在匹配时调用替换函数,匹配对象作为唯一参数。它必须返回替换字符串
import re
global count
count = 50
filedata = "hello ~RR*120* foo ~RR*40*"
def repl_function(m):
return str(int(m.group(1))+count+len(m.group(1)))
filedata = re.sub('(?<=~RR\*)(\d+)(?=\*)', repl_function, filedata)
print(filedata)
我们看到这些数字已被提取、计算并替换回原始字符串。我使用了非消费(lookback/lookahead)组,因此只将数字传递给替换字符串,并且包装模式保留在更新的字符串中。感谢您的建议,现在可以正常工作了。非常感谢你的帮助!!