gpt4 book ai didi

python - 正则表达式操作截掉第一个字母

转载 作者:行者123 更新时间:2023-12-01 03:03:55 24 4
gpt4 key购买 nike

我正在尝试编写一个 Python 脚本,它将查找目录树中的所有 .py 文件,并进行以下替换:

myAppl.Variable(VDC).Read() --> MAPort.Read(Model.VDC).Value

但是目前的结果如下:

myAppl.Variable(VDC).Read() --> MAPort.Read(Model.DC).Value

为什么我的变量的第一个字母被删除了,我做错了什么?

mypath = "P:\\myTest"
fnames = []
for root, subFolders, files in os.walk(mypath):
for file in files:
if file.endswith(".py"):
fnames.append(root + '\\' + file)
for fname in fnames:
with open(fname) as reader:
data = reader.read()
data = re.sub(r'(myAppl.Variable\(.(.+)\).Read\(\))',
r'MAPort.Read(Model.\2).Value', data)
with open(fname, 'w') as writer:
writer.write(data)

最佳答案

由于这部​​分,( 后面的最适合的字符与点匹配: \(. 删除点。您还需要转义应该的点匹配文字句点符号。

使用

r'myAppl\.Variable\(([^()]*)\)\.Read\(\)'

并替换为r'MAPort.Read(Model.\1).Value'

请参阅regex demo和一个Python demo :

import re
rx = r"myAppl\.Variable\(([^()]*)\)\.Read\(\)"
s = "myAppl.Variable(VDC).Read()"
result = re.sub(rx, r"MAPort.Read(Model.\1).Value", s)
print(result)
# => MAPort.Read(Model.VDC).Value

关于python - 正则表达式操作截掉第一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43575683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com