我正在尝试像这样在字符串的末尾有效地添加一个:
tt0000001
--> tt0000002
但我不知道如何做到这一点。
一个复杂的方法是去除开头的 2 个 t,计算非零数字的数量(我们称这个数字为 z),将字符串设为 int,加 1,然后创建一个字符串2 t,6 - z 0,然后是 int,但由于我需要多次使用许多字符串(例如:tt0000001
,然后 tt0000002
然后 tt0000003
等),它会有更有效的方法来做这件事真是太好了。
有人知道怎么做吗?如果可能的话,单线将是理想的选择。
谢谢!
答案 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'{}'
,因为您不能在其中使用反冲。