2010-10-28 120 views
0

我已经定义了一个生成ID的函数。我需要在每次调用函数时递增数字。连续字母数字的自动增量。 (Python)

所以我用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)) 

回答

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']))