peterz
8 лет назадФункция для трансляции русских тегов в формат блокчейна
Набросал на Питоне функцию для трансляции русских тегов в формат блокчейна и обратно. Может кому пригодится:
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'