如何在python中递增数字字符串“0000000001”?

2024-10-05 14:28:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数getNextSeqNo()。我希望它在调用时增加数字字符串,即00000000000000000001,然后再到0000000002。我该怎么做?

我写的如下:

def __init__(self) :
    self.seq = '0000000000'

def getNextSeqNo(self) :
    self.seq = str(int(self.seq) +1)
    return(self.seq)

我得到1作为输出,而不是0000000001


Tags: 函数字符串selfreturninitdef数字seq
3条回答

^{}格式化您的号码:

self.seq = format(int(self.seq) + 1, '010d')

更好的方法是,不要存储字符串,而是存储整数并返回格式化版本:

def __init__(self):
    self.seq = 0

def getNextSeqNo(self):
    self.seq += 1
    return format(self.seq, '010d')

使用010d格式将整数输出为0填充的字符串,包含10个字符:

>>> format(0, '010d')
'0000000000'
>>> format(42, '010d')
'0000000042'

可以将字符串转换为int并使用

self.seq = '%010d' % (int(self.seq) + 1)
return self.seq

如果不需要self.seq作为字符串,您可以

def __init__(self) :
    self.seq = 0

def getNextSeqNo(self) :
    self.seq += 1
    return '%010d' % self.seq

最快、最简单,但肯定不是最清楚的:

str(int('9' + self.seq) + 1)[1:]

它的工作原理是在转换为整数之前添加一个前导数字,以保留所有前导零,然后在转换回字符串之后剥离该前导数字。它的优点是不需要事先知道需要多少位数字。

相关问题 更多 >