如何用字符串中最后找到的数字分割字符串?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用字符串中最后找到的数字分割字符串?相关的知识,希望对你有一定的参考价值。
我是重新使用python模块的人。我正在尝试在最后找到的数字中分割字符串。
Given string:
![](images/folder0/subfolder1/file0.png)
^ last found number = 0
I would like to split the string in three parts:
part1: ![](images/folder0/subfolder1/file
part2: 0
part3: .png)
我的尝试:
我可以找到这些拆分:
lst = re.split(r'(d+)', query)
# ['![](images/folder', '0', '/subfolder', '1', '/file', '0', '.png)']
但是,我不确定如何分成三部分。
感谢您的帮助。
答案
这是您的第一个未编辑问题的解决方案:
import sys, re
query = "![](images/folder0/subfolder1/file0.png)"
query = re.sub("(d+)(?!.*d+.*)", str(int(re.search("(d+)(?!.*d+.*)",query).group()) + 1),query)
print(query)
另一答案
使用否定的前瞻:
[(?!.*d)
确保后面没有数字。
query = '![](images/folder0/subfolder1/file0.png)'
lst = re.split(r'(d+)(?!.*d)', query)
print lst
输出:
['![](images/folder0/subfolder1/file', '0', '.png)']
另一答案
您可以使用(S+)(d+)(.S+)
s = "![](images/folder0/subfolder1/file10.png)"
matched = re.findall(r'(S+)(d+)(.S+)', s)
# output
[('![](images/folder0/subfolder1/file1', '0', '.png)')]
另一答案
替代方式:
import sys, re
query = "![](images/folder0/subfolder1/file0.png)"
m = re.match(r'(.+)(d+)(.+)', query)
lst = m.groups()
print(lst)
给予:
('![](images/folder0/subfolder1/file', '0', '.png)')
更新积分:@Toto
上述正则表达式模式仅在最后一个数字为一位数字时有效。(try at regex101)。
![](images/folder0/subfolder1/file20.png)
wrong answer ==> ('![](images/folder0/subfolder1/file2', '0', '.png)')
要解决此问题,请使用负面观察:
query = '![](images/folder0/subfolder1/file20.png)'
lst = re.split(r'(d+)(?!.*d)', query)
right answer ==> ('![](images/folder0/subfolder1/file', '20', '.png)')
另一答案
这样的东西?如果查询中的“文件” +编号一致:
import sys, re
query = "![](images/folder0/subfolder1/file10.png)"
num = re.findall('d+',query)[-1] # gives last number 0
newnum = int(num)+1
query = query.replace(r'file'+num, 'file'+str(newnum))
print(query)
另一答案
您拥有使用正则表达式吗?我没有使用正则表达式就写下来了:
s = '![](images/folder0/subfolder1/file0.png)'
s1 = s.split('/')
s2 = s1[len(s1)-1].split('.')
s3 = s2[0][0:4] + str(int(s2[0][4:])+1) + '.' + s2[1]
new_filelist = []
for i in s1[0:len(s1)-1]:
append_str = i + '/'
new_filelist.append(append_str)
new_filelist.append(s3)
new_filename = ''.join(i for i in new_filelist)
只要字符串始终以'fileXX.png'结尾,它将在最后一位数字上加1
以上是关于如何用字符串中最后找到的数字分割字符串?的主要内容,如果未能解决你的问题,请参考以下文章