Где является “лучший ASCII Python для этого Unicode” базой данных?

OWIN - это спецификация. Это набор инструкций, который описывает, «как» что-то должно работать.

Katana - это реализация Microsoft OWIN, которая также включает некоторые компоненты промежуточного программного обеспечения для обеспечения безопасности / аутентификации, обслуживания статических файлов и некоторых других вещей.

Kestrel - кроссплатформенный веб-сервер Microsoft для разработки, который можно использовать с ASP.NET 5. и NetCore

84
задан joeforker 3 May 2009 в 03:46
поделиться

4 ответа

Unidecode выглядит законченным решением. Он преобразует причудливые кавычки в кавычки ascii, латинские символы с диакритическими знаками в безударные и даже пытается транслитерировать символы, которые не имеют эквивалентов ASCII. Таким образом, вашим пользователям не нужно будет видеть кучу? когда вам нужно было передать их текст через устаревшую 7-битную систему ascii.

>>> from unidecode import unidecode
>>> print unidecode(u"\u5317\u4EB0")
Bei Jing 

http://www.tablix.org/~avian/blog/archives/2009/01/unicode_transliteration_in_python/

87
ответ дан 24 November 2019 в 08:36
поделиться

В моем первоначальном ответе я также предложил unicodedata.normalize . Однако я решил проверить это, и оказалось, что он не работает с кавычками Unicode. Он хорошо выполняет перевод акцентированных символов Юникода, поэтому я предполагаю, что unicodedata.normalize реализован с использованием юникода . функция декомпозиции , которая заставляет меня поверить, что она, вероятно, может обрабатывать только символы Unicode, которые являются комбинациями буквы и диакритического знака, но я не очень разбираюсь в спецификации Unicode, так что я мог бы просто быть горячим air ...

В любом случае вы можете использовать unicode.translate , чтобы вместо этого иметь дело с символами пунктуации. Метод translate принимает словарь ординалов Unicode к ординалам Unicode, таким образом, вы можете создать отображение, которое преобразует пунктуацию Unicode только в ASCII-совместимую пунктуацию:

'Maps left and right single and double quotation marks'
'into ASCII single and double quotation marks'
>>> punctuation = { 0x2018:0x27, 0x2019:0x27, 0x201C:0x22, 0x201D:0x22 }
>>> teststring = u'\u201Chello, world!\u201D'
>>> teststring.translate(punctuation).encode('ascii', 'ignore')
'"hello, world!"'

При необходимости вы можете добавить больше отображений пунктуации, но Я не думаю, что вам обязательно нужно беспокоиться об обработке каждого символа препинания Unicode. Если вам нужно обрабатывать акценты и другие диакритические знаки,

24
ответ дан 24 November 2019 в 08:36
поделиться

Интересный вопрос.

Google помог мне найти эту страницу , которая описывает использование модуля unicodedata в следующем виде:

import unicodedata
unicodedata.normalize('NFKD', title).encode('ascii','ignore')
21
ответ дан 24 November 2019 в 08:36
поделиться

Дополнительное обсуждение этого вопроса на http://code.activestate.com/recipes/251871/ , где есть решение NFKD и некоторые способы создания таблицы преобразования, для таких вещей, как ± => +/- и других небуквенных символов.

3
ответ дан 24 November 2019 в 08:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: