将int转换为仅包含小写字母和数字的字符串并返回(python)

时间:2012-06-15 21:18:14

标签: python string int

python 2.7

你如何获取任何数字并能够将其压缩为小写字母和数字?如何获取结果字符串并将其重新标记为数字?

为每个3个数字块执行chr()之类的操作是行不通的,因为如果数字块大于255,则会抛出错误,我只想要小写的数字和字母。

编辑:

这个压缩数字的主要目的。用户将看到这个并将输入,因此它需要很容易输入(不能有ascii支持但不在标准键盘上的奇怪字符)

2 个答案:

答案 0 :(得分:6)

使用base 36,下面是您可以在维基百科上找到的Python实现的改编版本:

def base36encode(number, alphabet='0123456789abcdefghijklmnopqrstuvwxyz'):
    """Converts an integer to a base36 string."""
    if not isinstance(number, (int, long)):
        raise TypeError('number must be an integer')

    base36 = '' if number != 0 else '0'
    sign = ''
    if number < 0:
        sign = '-'
        number = -number

    while number != 0:
        number, i = divmod(number, len(alphabet))
        base36 = alphabet[i] + base36

    return sign + base36

def base36decode(number):
    return int(number, 36)

>>> print base36encode(1412823931503067241)
aqf8aa0006eh
>>> print base36decode('aqf8aa0006eh')
1412823931503067241

答案 1 :(得分:0)

str.lower()使字符串str为小写。或者,您可以使用regex仅查找字母/单词和数字,但问题不是很明确,所以我不确定您的意思。