2010-10-28 125 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']))