使用Python替换最后一次出现的字符串

时间:2019-02-13 11:36:08

标签: python replace split increment last-occurrence

我需要在拆分字符串后最后一次替换字符串

我尝试了以下方法,但是它给出了错误的输出,例如1.120

下面是我尝试过的代码。

y = "1.19-test"


if '-' in y:
    splt = (int(y.split('-')[0][-1]) + 1)
    str = y[::-1].replace(y.split('-')[0][-1], str(splt)[::-1], 1)[::-1]
    print str
else:
    splt = (int(y.split('.')[-1]) + 1)
    str = y[::-1].replace(y.split('-')[0][-1], str(splt)[::-1], 1)[::-1]
    print str

我得到的输出像1.120-test。但是在这里,我需要将输出作为1.20-test

3 个答案:

答案 0 :(得分:0)

据我了解,您需要这样的东西:

y = "1-19"

str1 = ''
if '-' in y:
    splt = y.split('-')
    str1 = "%s-%s"%(splt[0], int(splt[-1])+1)
else:
    splt = y.split('.')
    str1 = "%s.%s"%(splt[0], int(splt[-1])+1)
print str1

答案 1 :(得分:0)

太复杂了。只需存储拆分的输出,进行更改,然后使用.join方法即可获取所需的字符串。 编辑根据更新的问题,您还需要事先处理一些额外的字符。假设您只想增加.之后的部分,则可以在应用拆分逻辑之前仅跟踪leftover变量中的多余字符。

y = "1.19-test"
leftover = ''
if '-' in y:
    temp_y, leftover = y[:y.index('-')], y[y.index('-'):]
else:
    temp_y = y

split_list = temp_y.split('.')
split_list[-1] = str(int(split_list[-1]) + 1) #convert last value to int, add 1, convert result back to string.
result = '.'.join(split_list) #joins all items in the list using "."
result += leftover #add back any leftovers
print(result)
#Output:
1.20-test

答案 2 :(得分:0)

以下代码有效,我引用了@Paritosh Singh代码。

y = "1.19"
if '-' in y:
    temp = y.split('-')[0]
    splitter = '.'
    split_list = temp.split(splitter)
    split_list[-1] = str(int(split_list[-1]) + 1)
    result = splitter.join(split_list)
    print(result)
    print result+'-'+y.split('-')[1]

else:
    splitter = '.'
    split_list = y.split(splitter)
    split_list[-1] = str(int(split_list[-1]) + 1)
    result = splitter.join(split_list)
    print(result)