python .replace не работает должным образом - PullRequest
0 голосов
/ 30 апреля 2018

Мой код берет список строк со статического сайта.

Затем он перебирает каждый символ в списке и использует метод .replace для замены любого символа, отличного от utf-8:

foo.replace('\\u2019', "'")

Не корректно заменяет символ в списке и выглядит следующим образом:

до

u'What\u2019s with the adverts?'

после

u'What\u2019s with the adverts?'

Почему это

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

да. Если ваша строка foo = r'What\u2019s with the adverts?' будет в порядке с foo.replace('\\u2019', "'"). Это необработанная строка, начинающаяся с r ''. А с тобой это Юникод. Надеюсь помочь вам.

0 голосов
/ 30 апреля 2018

Python 2.7 интерпретирует строковые литералы как ASCII, а не юникод, и поэтому, даже если вы пытались включить символы юникода в свой аргумент для foo.replace, replace просто видит ASCII {'\', 'u', '2', '0', '1', '9'}. Это связано с тем, что Python не присваивает специальное значение "\u", если только он не анализирует литерал Юникода.

Чтобы сообщить Python 2.7, что это строка в кодировке Unicode, вы должны добавить к строке префикс u, как в foo.replace(u'\u2017', "'").

Кроме того, чтобы указать начало кода Unicode, вам нужно \u, а не \\u - последний указывает, что вы хотите фактический '\' в строке, за которым следует 'u'.

Наконец, обратите внимание, что foo не изменится в результате вызова replace. Вместо этого replace вернет значение, которое вы должны присвоить новой переменной, например:

bar = foo.replace(u'\u2017', "'")
print bar

(см. Stackoverflow.com/q/26943256/4909087)

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