Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
peterz
7 лет назад

Функция для трансляции русских тегов в формат блокчейна

Набросал на Питоне функцию для трансляции русских тегов в формат блокчейна и обратно. Может кому пригодится:

def translate_tag(tag):
    if not (hasattr(translate_tag, "cyr_chars") and
            hasattr(translate_tag, "lat_chars") and
            hasattr(translate_tag, "cyr_prefix")):
        translate_tag.cyr_chars = "щ    ш  ч  ц  й  ё  э  ю  я  х  ж  а б в г д е з и к л м н о п р с т у ф ъ  ы ь".split()
        translate_tag.lat_chars = "shch sh ch cz ij yo ye yu ya kh zh a b v g d e z i k l m n o p r s t u f xx y x".split()
        translate_tag.cyr_prefix = "ru--"

    if "а" <= tag[:1] <= "я" or tag.startswith("ё"):
        prefix = translate_tag.cyr_prefix
        table = zip(translate_tag.cyr_chars, translate_tag.lat_chars)
    elif tag.startswith(translate_tag.cyr_prefix):
        prefix = ""
        table = zip(translate_tag.lat_chars, translate_tag.cyr_chars)
        tag = tag[len(translate_tag.cyr_prefix):]
    else:
        prefix = ""
        table = []

    for l, i in table:
        tag = i.join(tag.split(l))
    return prefix + tag



Работает в обе стороны. Теги, которые не надо транслировать, оставляет в покое:

>>> translate_tag("trump")
'trump'
>>> translate_tag("ru--zamuzh-nevterpyozh")
'замуж-невтерпёж'
>>> translate_tag("щекочихин-крестовоздвиженский")
'ru--shchekochikhin-krestovozdvizhenskiij'
0
68.421 GOLOS
Комментарии (1)
Сортировать по:
Сначала старые