Подтвердить что ты не робот

Как заменить символы Unicode в строке на что-то еще python?

У меня есть строка, которую я получил от чтения URL-адреса страницы с марками, которые имеют символ "•" из-за маркированного списка. Обратите внимание, что текст является источником html из веб-адреса, используя Python 2.7 urllib2.read(webaddress).

Я знаю символ unicode для этого как U + 2022, но как я могу заменить этот символ Юникода на что-то вроде?

Я пробовал делать str.replace( "•", "something" );

но он не работает... как это сделать?

4b9b3361

Ответ 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>)