Автоинкремент каскадных буквенно-цифровых символов. (Python) - PullRequest
0 голосов
/ 28 октября 2010

Я определил функцию, которая генерирует идентификатор. Мне нужно увеличивать числа каждый раз, когда я вызываю функцию.

Поэтому я использовал функцию max(), чтобы найти последнее наибольшее значение, сохраненное в списке. В соответствии с требованиями мой идентификатор должен также состоять из строки перед целыми числами.

Итак, я связал строку с некоторыми числами, которые были сохранены в списке.

Теперь мой max() не работает, потому что после объединения его преобразуется в буквенно-цифровую.

Ниже указана определенная мной функция:

#!/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 голосов
/ 28 октября 2010

Вы можете удалить числовой суффикс из строки, чтобы получить число для приращения:

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']))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...