我正在使用re模块练习一些正则表达式。我想知道如何 我们可以只更改字符串中的一些数字吗?
a1 = 'images1/b100.png'
# required:
a2 = 'images2/b100.png'
我的尝试
import re
a1 = 'images1/b100.png'
nums = list(map(int, re.findall(r'\d+', a1)))
num0 = nums[0]
a2 = a1.replace(str(num0), str(num0+1))
答案 0 :(得分:2)
您可以提供一个参数以仅替换第一次出现的情况。
更改:
a2 = a1.replace(str(num0), str(num0+1))
收件人:
a2 = a1.replace(str(num0), str(num0+1), 1)
如此处所述:https://docs.python.org/3/library/stdtypes.html
str.replace(old,new [,count])
返回该字符串的副本,其中所有出现的子字符串old都被new替换。如果指定了可选的参数count,则仅替换第一个出现的计数。
答案 1 :(得分:1)
您可以输入:
a2 = a1.replace(str(num0), str(num0+1), 1)
答案 2 :(得分:1)
下面是答案,
a2.replace("b200","100")
结果: 'images2 / 100.png'
如有任何疑问,请告诉我。
答案 3 :(得分:0)
为什么不使用re.sub
?
import re
a1 = 'images1/b100.png'
re.sub(r"images1/b(\d+).png", r"images2/\1.png", a1) # => 'images2/100.png'
答案 4 :(得分:0)
import re
a1 = 'images1/b100.png'
matches = re.match( r'^(.*)(\d+)(\/.*)$', a1)
a2 = matches.group(1)+str(int(matches.group(2))+1)+matches.group(3)
^(.*)(\d+)(\/.*)$
:以数字和任何文件名结尾的路径。