Я не могу сохранить специальные символы, такие как θæŋ после поиска.
Я сохраняю текстовое поле модели Django. на странице администратора вместо θæŋkfəli я получаю
\xce\xb8\xc3\xa6\xc5\x8bkf\xc9\x99li
Это ошибка исследования? Это ошибка администратора? Я неправильно сохраняю?
Как найти нужную часть строки и сохранить ее в текстовом поле модели с символами «θæŋ»?
lines='title="Listen to audio" /></a><span class="pr">/<span class="unicode">ˈ</span>θæŋkfəli/</span> <span class="fl">adverb' #the string which i wan to save exactly as it is, Django saves it correctly
liness=smart_str(lines, encoding='utf-8', strings_only=False, errors='replace') # saves correctly
linesu=smart_unicode(lines, encoding='utf-8', strings_only=False, errors='replace') # saves correctly
После попытки найти часть строки θæŋkfəli Django не сохраняет ее в необходимых спецсимволах. Вместо θæŋkfəli я получаю "\xce\xb8\xc3\xa6\xc5\x8bkf\xc9\x99li"
stryc=re.compile('<span\s*class=\"pr\">\s*/\s*<span\s*class="unicode\">(?P<Pronun>.*)<span\s*class=\"fl\">', re.DOTALL)
#\s+/\s+<span class=\"unicode\">\s+[\\a-zA-Z0-9\s]+/\s+</span> '
strys=re.search(stryc, linesu)
Pronun=stryWordcs.groups('Pronun')
text=Pronun.encode('utf-8') # does not covert unicode to letters
Pronun=smart_str(Pronun, encoding='utf-8', strings_only=False, errors='replace') # also does not covert unicode to letters
a=Pronunciation(field=Pronun) # or field=text
a.save()
# Pronun= "θæŋkfəli", nevertheless it is saved as \xce\xb8\xc3\xa6\xc5\x8bkf\xc9\x99li or in unicode
Если я не использую smart_str, я получаю "\u03b8\xe6\u014bkf\u0259li"
Если я попытаюсь выполнить поиск по строкам или строкам, я не смогу найти θæŋkfəli из-за специального символа ˈ (маленькая палочка сверху =\xcb\x88 = \u02c8)
Привет, гинтаре
1 ответ
Когда вы видите "\xce\xb8\xc3\xa6\xc5\x8bkf\xc9\x99li
, вы видите то же самое, что и θæŋkfəli, но в шестнадцатеричной системе счисления. Точно так же вы можете представить тот же набор символов, что и
U+03B8 U+00E6 U+014BkfU+0259li
Это связано с тем, что текст хранится в виде строки Unicode. Чтобы убедиться, что это действительно то же самое, попробуйте скопировать свой текст (со специальными символами) в верхнее поле в этот конверсионный веб-сайт и нажмите Конвертировать. Python может обрабатывать Unicode, но в зависимости от того, что вы используете для отображения символов, выйдет иначе.
Я не совсем уверен, что ваш вопрос. Если вы беспокоитесь о том, чтобы ваше регулярное выражение могло точно соответствовать символам Юникода, модуль python re
имеет возможность заставить по-другому работать с юникодом.
Если вас беспокоит, как отображается этот текст, это будет зависеть от того, как вы пытаетесь его отобразить, и вам нужно будет более конкретно описать свою проблему.
Однако я могу заверить вас, что Django отлично хранит вашу строку.
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.