在 Python 中递增字母数字字符串
Incrementing an alphanumeric string in Python
我需要构建一个函数,它获取一个字母数字字符串 (0, 1, ... , 8, 9, A, B, C, ... , Z),加 1 和 return 字符串。例如:给定02H9Z,函数应return02HA0。
我在网上找到了几个随机字母数字字符串生成器。他们工作得很好,但没有解决我的问题。然后我开始编写一个函数来检查 for 循环中的每个字符并将其与 'A'、'B'、... 进行比较 - 但我认为这效率不高。
谁能想到更好的解决方案?
也就是36进制,使用内置的int
函数,和Numpy的numpy.base_repr
:
import numpy
s = '02H9Z'
new = int(s, 36) + 1
print(numpy.base_repr(new, 36))
下面是仅使用内置函数的解决方案:
l = '0123456789abcdefghijklmnopqrstuvwxyz'
def increase(s):
new_s = []
continue_change = True
for c in s[::-1].lower():
if continue_change:
if c == 'z':
new_s.insert(0, '0')
else:
new_s.insert(0, l[l.index(c) + 1])
continue_change = False
else:
new_s.insert(0, c)
return ''.join(new_s)
我需要构建一个函数,它获取一个字母数字字符串 (0, 1, ... , 8, 9, A, B, C, ... , Z),加 1 和 return 字符串。例如:给定02H9Z,函数应return02HA0。
我在网上找到了几个随机字母数字字符串生成器。他们工作得很好,但没有解决我的问题。然后我开始编写一个函数来检查 for 循环中的每个字符并将其与 'A'、'B'、... 进行比较 - 但我认为这效率不高。
谁能想到更好的解决方案?
也就是36进制,使用内置的int
函数,和Numpy的numpy.base_repr
:
import numpy
s = '02H9Z'
new = int(s, 36) + 1
print(numpy.base_repr(new, 36))
下面是仅使用内置函数的解决方案:
l = '0123456789abcdefghijklmnopqrstuvwxyz'
def increase(s):
new_s = []
continue_change = True
for c in s[::-1].lower():
if continue_change:
if c == 'z':
new_s.insert(0, '0')
else:
new_s.insert(0, l[l.index(c) + 1])
continue_change = False
else:
new_s.insert(0, c)
return ''.join(new_s)