Неравномерная поддержка base-36 в Python?
Я недавно работал с base-36 и никогда не был удовлетворен обычным ответом на преобразование целых чисел в строки base-36. Это выглядит немного несбалансированным...
def to_base36(value):
if not isinstance(value, int):
raise TypeError("expected int, got %s: %r" % (value.__class__.__name__, value))
if value == 0:
return "0"
if value < 0:
sign = "-"
value = -value
else:
sign = ""
result = []
while value:
value, mod = divmod(value, 36)
result.append("0123456789abcdefghijklmnopqrstuvwxyz"[mod])
return sign + "".join(reversed(result))
... по сравнению с обратным...
def from_base36(value):
return int(value, 36)
Действительно ли Python не включает этот конкретный аккумулятор?
3 ответа
Решение
Вы пробовали пакет для бассейна?
>>> import basin
>>> basin.encode("0123456789abcdefghijklmnopqrstuvwxyz", 100)
'2s'
Это не батареи включены, но pypi
Хранилище похоже на магазин, в котором можно собирать батареи с минимумом суеты.
Чтобы продолжить аналогию, батарея такого размера может не входить в базовую комплектацию, но ее достаточно легко приобрести в Интернете для совместимых со штекерами аксессуаров:
http://code.activestate.com/recipes/365468-number-to-string-in-arbitrary-base/