Как заменить символы Unicode в строке на что-то еще python?
У меня есть строка, которую я получил от чтения URL-адреса страницы с марками, которые имеют символ "•" из-за маркированного списка. Обратите внимание, что текст является источником html из веб-адреса, используя Python 2.7 urllib2.read(webaddress).
Я знаю символ unicode для этого как U + 2022, но как я могу заменить этот символ Юникода на что-то вроде?
Я пробовал делать
str.replace( "•", "something" );
но он не работает... как это сделать?
Ответы
Ответ 1
-
Декодируем строку в Unicode. Предполагая, что кодировка UTF-8:
str.decode("utf-8")
-
Вызвать метод replace
и обязательно передать ему строку Unicode в качестве первого аргумента:
str.decode("utf-8").replace(u"\u2022", "*")
-
При необходимости скопируйте обратно в UTF-8:
str.decode("utf-8").replace(u"\u2022", "*").encode("utf-8")
(К счастью, Python 3 останавливается на этом беспорядке. Шаг 3 действительно должен выполняться только до ввода-вывода. Также помните, что вызов строки str
тень встроенного типа str
. )
Ответ 2
Кодировать строку как unicode.
>>> special = u"\u2022"
>>> abc = u'ABC•def'
>>> abc.replace(special,'X')
u'ABCXdef'
Ответ 3
import re
regex = re.compile("u'2022'",re.UNICODE)
newstring = re.sub(regex, something, yourstring, <optional flags>)