0

パイソン2.7

どのようにして数字を取得し、それを小文字と数字だけに圧縮できますか? 結果の文字列をどのようにして数値に戻すのですか?

数字のブロックが255より大きい場合、エラーがスローされ、小文字の数字と文字のみが必要になるため、3つの数字の数字のブロックごとに chr() のようなことをしても機能しません。

編集:

これの主な目的は、数値を圧縮することです。ユーザーはこれを見て入力するので、簡単に入力できる必要があります (ASCII がサポートしているが標準キーボードにない奇妙な文字を使用することはできません)。

4

2 に答える 2

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
于 2012-06-15T21:26:09.690 に答える
0

str.lower()文字列 str を小文字にします。または、正規表現を使用して文字/単語と数字のみを検索することもできますが、質問が明確ではないため、何を意味するのかわかりません。

于 2012-06-15T21:26:23.617 に答える