замена Python и саб не работает с символом Unicode U "\ u0092" - PullRequest
0 голосов
/ 30 мая 2018

Python Версия: Python 3.6.Я пытаюсь заменить символ Unicode u «\ u0092» (он же вьющийся апостроф) обычным апострофом.

Я пробовал все нижеприведенное:

    mystring = <some string with problem character>
    # option 1 
    mystring = mystring.replace(u"\u0092", u\"0027")
    # option 2 
    mystring = mystring.replace(u"\u0092", "'")
    # option 3
    mystring = re.sub('\u0092',u"\u0027", mystring)
    # option 4
    mystring = re.sub('\u0092',u"'", mystring)

Ничто из вышеперечисленного не обновляет символ в mystring.Работают другие операции sub и replace - что заставляет меня думать, что это либо проблема с тем, как я использую символы Юникода, либо проблема с этим конкретным символом.

Обновление: я также попробовал приведенное ниже предложение, ни одно из которых не работает:

    mystring.decode("utf-8").replace(u"\u0092", u"\u0027").encode("utf-8")
    mystring.decode("utf-8").replace(u"\u2019", u"\u0027").encode("utf-8")

Но оно дает мне ошибку: AttributeError: у объекта 'str' нет атрибута 'decode'

Просто для уточнения: IDE здесь не является основной проблемой.Мой вопрос заключается в том, почему, когда я запускаю replace или sub с символом Unicode и печатаю результат, он не регистрируется - этот символ все еще присутствует в строке.

1 Ответ

0 голосов
/ 30 мая 2018

Ваш код неверен, это \u2019 для апострофа (').из википедии

U + 0092 146 Личное использование 2 PU2 ​​

, поэтому затмение не устраивает.


с правильным кодом:

#_*_ coding: utf8 _*_
import re
string = u"dkfljglkdfjg’fgkljlf"
string = string.replace(u"’", u"'"))
string = string.replace(u"\u2019", u"\u0027")
string = re.sub(u'\u2019',u"\u0027", string)
string = re.sub(u'’',u"'", string)

все решения работают

и не называйте свои переменные str

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...