У меня есть самописный инструмент, который преобразует индийские транслитерированные строки в выходные данные Unicode и работает следующим образом:
>>> x_HK_to_UNI("ahaM")
В результате получается следующая строка:
'aha\xe1\xb9\x82''
Пока все хорошо, этот инструмент протестирован и использовался для преобразования тысяч документов.
Сейчас я пишу приложение Django и хочу применить эту функцию в качестве фильтра в шаблоне. Код выглядит следующим образом:
from __future__ import unicode_literals
from django import template
from django.utils.encoding import smart_text
from xliterator import *
register = template.Library()
@register.filter
def process_trans_for_html(string):
newstring = []
string = string.split(' ')
for word in string:
if word[-3:] == '_xn' :
newstring.append(x_HK_to_UNI(word[:1]).upper()+(x_HK_to_UNI(word[1:-3]).lower())
elif word[-3:] == '_xh' :
newstring.append(x_HK_to_UNI(word[:-3]).lower())
else:
newstring.append(word)
return ' '.join(newstring)
В шаблоне я передаю данные в фильтр следующим образом:
{{ line.line|process_trans_for_html }}
В принципе функция работает до тех пор, пока ничего не заменено, поэтому при обработке yena_xn он отображается на сайте корректно как Yena.
Но ahaM_xn нужно превратить в ahaṃ (это работа x_HK_to_UNI) - и когда такое слово встречается, все строка просто исчезает и оставляет пустое место на странице.
Есть какие-нибудь предложения по этому поводу? Я уже пробовал все виды преобразований Unicode, и, похоже, это не помогло. Я чувствую себя довольно растерянным. Также нет сообщения об ошибке.
Я использую Python2.7.
РЕДАКТИРОВАТЬ: Здесь соответствующие части xliterator.py:
import sys, re, os
SEPARATOR_PRIMARY=";"
class Xlator(dict): # Xlator is initialized through a mapping
def _make_regex(self):
"""Build re object based on the keys of the current dict"""
return re.compile("|".join(map(re.escape, self.keys())))
def __call__(self, match):
"""Handler invoked for each regex match"""
return self[match.group(0)]
def xlate(self, text):
"""Translate text, returns the modified text"""
return self._make_regex().sub(self, text)
def _transposeDict(d): # returns a dict with key value transposed
nd = {}
for (k,v) in d.items():
nd[v]=k
return nd
#Unicode to HK
DICT_UNI_HK = {'ā':'A','Ā':'A','ī':'I','Ī':'I','ū':'U','Ū':'U',\
'ṛ':'R','Ṛ':'R','ṝ':'RR','ḷ':'L','Ḷ':'L','ḹ':'LL',\
'ṃ':'M','Ṃ':'M','ḥ':'H','Ḥ':'H','ṅ':'G','Ṅ':'G',\
'ñ':'J','Ñ':'J','ṭ':'T','Ṭ':'T','ḍ':'D','Ḍ':'D',\
'ṇ':'N','Ṇ':'N','ś':'z','Ś':'z','ṣ':'S','Ṣ':'S',
}
def x_UNI_to_HK(in_str_UNI): # input:
xlator_Obj = Xlator(DICT_UNI_HK)
return xlator_Obj.xlate(in_str_UNI)
def x_HK_to_UNI(in_str_UNI):
DICT_HK_UNI = dict (zip(DICT_UNI_HK.values(),DICT_UNI_HK.keys()))
xlator_Obj = Xlator(DICT_HK_UNI)
return xlator_Obj.xlate(in_str_UNI)
Подробнее здесь: https://stackoverflow.com/questions/328 ... ode-filter
Строка Django исчезает в шаблоне при применении фильтра Юникода ⇐ Python
Программы на Python
-
Anonymous
1764050884
Anonymous
У меня есть самописный инструмент, который преобразует индийские транслитерированные строки в выходные данные Unicode и работает следующим образом:
>>> x_HK_to_UNI("ahaM")
В результате получается следующая строка:
'aha\xe1\xb9\x82''
Пока все хорошо, этот инструмент протестирован и использовался для преобразования тысяч документов.
Сейчас я пишу приложение Django и хочу применить эту функцию в качестве фильтра в шаблоне. Код выглядит следующим образом:
from __future__ import unicode_literals
from django import template
from django.utils.encoding import smart_text
from xliterator import *
register = template.Library()
@register.filter
def process_trans_for_html(string):
newstring = []
string = string.split(' ')
for word in string:
if word[-3:] == '_xn' :
newstring.append(x_HK_to_UNI(word[:1]).upper()+(x_HK_to_UNI(word[1:-3]).lower())
elif word[-3:] == '_xh' :
newstring.append(x_HK_to_UNI(word[:-3]).lower())
else:
newstring.append(word)
return ' '.join(newstring)
В шаблоне я передаю данные в фильтр следующим образом:
{{ line.line|process_trans_for_html }}
В принципе функция работает до тех пор, пока ничего не заменено, поэтому при обработке yena_xn он отображается на сайте корректно как Yena.
Но ahaM_xn нужно превратить в ahaṃ (это работа x_HK_to_UNI) - и когда такое слово встречается, все строка просто исчезает и оставляет пустое место на странице.
Есть какие-нибудь предложения по этому поводу? Я уже пробовал все виды преобразований Unicode, и, похоже, это не помогло. Я чувствую себя довольно растерянным. Также нет сообщения об ошибке.
Я использую Python2.7.
РЕДАКТИРОВАТЬ: Здесь соответствующие части xliterator.py:
import sys, re, os
SEPARATOR_PRIMARY=";"
class Xlator(dict): # Xlator is initialized through a mapping
def _make_regex(self):
"""Build re object based on the keys of the current dict"""
return re.compile("|".join(map(re.escape, self.keys())))
def __call__(self, match):
"""Handler invoked for each regex match"""
return self[match.group(0)]
def xlate(self, text):
"""Translate text, returns the modified text"""
return self._make_regex().sub(self, text)
def _transposeDict(d): # returns a dict with key value transposed
nd = {}
for (k,v) in d.items():
nd[v]=k
return nd
#Unicode to HK
DICT_UNI_HK = {'ā':'A','Ā':'A','ī':'I','Ī':'I','ū':'U','Ū':'U',\
'ṛ':'R','Ṛ':'R','ṝ':'RR','ḷ':'L','Ḷ':'L','ḹ':'LL',\
'ṃ':'M','Ṃ':'M','ḥ':'H','Ḥ':'H','ṅ':'G','Ṅ':'G',\
'ñ':'J','Ñ':'J','ṭ':'T','Ṭ':'T','ḍ':'D','Ḍ':'D',\
'ṇ':'N','Ṇ':'N','ś':'z','Ś':'z','ṣ':'S','Ṣ':'S',
}
def x_UNI_to_HK(in_str_UNI): # input:
xlator_Obj = Xlator(DICT_UNI_HK)
return xlator_Obj.xlate(in_str_UNI)
def x_HK_to_UNI(in_str_UNI):
DICT_HK_UNI = dict (zip(DICT_UNI_HK.values(),DICT_UNI_HK.keys()))
xlator_Obj = Xlator(DICT_HK_UNI)
return xlator_Obj.xlate(in_str_UNI)
Подробнее здесь: [url]https://stackoverflow.com/questions/32882789/django-string-disappears-in-template-when-applying-unicode-filter[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия