Ответ 1
Используйте Unidecode для транслитерации строки.
>>> import unidecode
>>> unidecode.unidecode(u'Gavin O’Connor')
"Gavin O'Connor"
Не знаю, это тривиально или нет, но мне нужно будет преобразовать строку unicode в строку ascii, и я не хотел бы иметь все эти символы побега. Я имею в виду, возможно ли иметь "приблизительное" преобразование в какой-то довольно похожий символ ascii?
Например: Gavin OConnor преобразуется в Gavin O\x92Connor, но мне бы очень хотелось, чтобы он был просто преобразован в Gavin O'Connor. Это возможно? Кто-нибудь написал какую-нибудь утилиту, чтобы сделать это, или мне нужно вручную заменить все символы?
Большое спасибо! Marco
Используйте Unidecode для транслитерации строки.
>>> import unidecode
>>> unidecode.unidecode(u'Gavin O’Connor')
"Gavin O'Connor"
b = str(a.encode('utf-8').decode('ascii', 'ignore'))
должен работать нормально.
import unicodedata
unicode_string = u"Gavin O’Connor"
print unicodedata.normalize('NFKD', unicode_string).encode('ascii','ignore')
Вывод:
Gavin O'Connor
Здесь документ, описывающий формы нормализации: http://unicode.org/reports/tr15/
Существует техника для снятия акцентов с персонажей, но другие персонажи должны быть напрямую заменены. Проверьте эту статью: http://effbot.org/zone/unicode-convert.htm
Попробуйте замену простого символа
str1 = ""I am the greatest", said Gavin O’Connor"
print(str1)
print(str1.replace("’", "'").replace(""","\"").replace(""","\""))
PS: добавьте # -*- coding: utf-8 -*-
в начало вашего файла .py
, если вы получите error