如何更新字符串中的最后一个元素?

时间:2018-07-15 16:41:48

标签: python

我正在尝试将以下字符串中的最后一个元素加1,预期的输出显示了所需的内容,下面的当前代码适用于所有情况,但对于version3version4情况,该怎么办我解决了吗?

version1 =  '1151.1'
version2 =  '4.1.1'
version3 = '275.1.2.99'
version4 = '369'

version = version3[:-1] + str(int(version3[-1]) + 1)
print(version)

预期的输出:-

1151.2
4.1.2
275.1.2.100
370

3 个答案:

答案 0 :(得分:4)

似乎您在说的“元素”实际上是字符串的最后一段,由句点(.)分隔。一种执行预期任务的方法是先将字符串除以.,然后从那里递增并重新连接。

version1 = '1151.1'
version2 = '4.1.1'
version3 = '275.1.2.99'
version4 = '369'

def increment_last_element(version):
    return '.'.join(version.split('.')[:-1] + [str(int(version.split('.')[-1]) + 1)])

print(increment_last_element(version1))
# Output: 1151.2

以下是细分:

# Join the spliced str back together with periods
'.'.join(  
    # Split the str by periods; retain all previous values
    version.split('.')[:-1] +
    # Convert to str
    # (also have to convert the str into a list for list concatenation)
    [str(  
    # Increment last element in the spliced string by 1
     int(version.split('.')[-1]) + 1)])

答案 1 :(得分:2)

使用带有[!a-zA-Z]str.split的简单迭代

例如:

str.join

输出:

l = ['1151.1', '4.1.1', '275.1.2.99', '369']
for i in l:
    val = i.split(".")
    val[-1] = str(int(val[-1])+1)
    print(".".join(val))

答案 2 :(得分:0)

您的version3是一个字符串,因此version[-1]仅返回字符串的最后一个字符。

您应该将版本字符串转换为整数数组,将最后一个数字加1,然后再转换回字符串。

version_array = [int(x) for x in version3.split('.')]
version_array[-1] += 1
print(".".join([str(x) for x in version_array]))