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

Replace the string in last occurrence using Python

拆分字符串后,我需要替换最后一次出现的字符串

我尝试了以下方法,但它给出了错误的输出,例如 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

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

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

太复杂了。只需存储拆分的输出,进行更改,然后使用 .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

下面的代码有效,我参考了@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)