自动递增的拼接字母数字串(Python)

0 投票
1 回答
1527 浏览
提问于 2025-04-16 06:13

我定义了一个生成ID的函数。 每次调用这个函数时,我需要让数字递增。

所以我用了 max() 函数来找出列表中存储的最后一个最大值。根据要求,我的ID前面还需要有一个字符串。

因此,我把一个字符串和一些存储在列表中的数字连接在了一起。

现在我的 max() 函数不工作了,因为在连接后,它变成了字母和数字混合的形式。请帮帮我。我尝试过拆分ID,但那样会把每个字符都拆开。

以下是我定义的函数:

#!/usr/bin/python

from DB import *

def Sid():
        idlist = []

        for key in Accounts:
                if Accounts[key]['Acctype'] == 'Savings':
                        idlist.append(Accounts[key]['Accno'])

        if len(idlist) == 0:
                return 1001

        else:
                abc = max(idlist)
                return abc + 1

编辑 1: 这是我调用这个函数的方式:

  accno = Sid()
  AppendRecord(Accno="SA"+str(accno))

1 个回答

2

你可以把字符串后面的数字部分去掉,这样就能得到一个可以增加的数字:

import re

def number_suffix(s):
    """Return the number from the end of the string. """
    match = re.search(r"\d+$", s)
    if match:
        num = int(match.group(0))
    else:
        num = 0
    return num

print number_suffix("AS1001")    # 1001
print number_suffix("AS1")       # 1
print number_suffix("AS")        # 0

然后修改你的函数:

idlist.append(number_suffix(Accounts[key]['Accno']))

撰写回答