在 Python 中的字母数字字符串末尾添加一个

时间:2021-05-12 14:31:54

标签: python python-3.x string

我正在尝试像这样在字符串的末尾有效地添加一个: tt0000001 --> tt0000002 但我不知道如何做到这一点。

一个复杂的方法是去除开头的 2 个 t,计算非零数字的数量(我们称这个数字为 z),将字符串设为 int,加 1,然后创建一个字符串2 t,6 - z 0,然后是 int,但由于我需要多次使用许多字符串(例如:tt0000001,然后 tt0000002 然后 tt0000003 等),它会有更有效的方法来做这件事真是太好了。

有人知道怎么做吗?如果可能的话,单线将是理想的选择。

谢谢!

2 个答案:

答案 0 :(得分:2)

您的描述基本正确。不过,这并不像您建议的那么困难,因为支持从整数创建一个 0 填充的字符串。

只要你知道这个数字是 7 位数字,你就可以做类似的事情

>>> x = 'tt0000001'
>>> x = f'tt{int(x.lstrip("t"))+1:07}'
>>> x
'tt0000002'

不过,更简单的是只保留一个整数变量,并且每次递增整数时仅根据需要(重新)构造标签。

>>> x = 1
>>> x += 1
>>> f'tt{x:07}'
'tt0000002'
>>> x += 1
>>> f'tt{x:07}'
'tt0000003'

答案 1 :(得分:0)

不是 DRY 或任何真正的东西,但更好的方法是重新,乍一看:

import re

text = tt0000001

text = '{0}{1:07d}'.format(re.sub(r'(\d.*)','',text),int(re.search(r'(\d.*)',text).group(0))+1)

不使用 f'{}',因为您不能在其中使用反冲。