2016-11-16 1 views
1

Кажется, что на других языках есть много сообщений об этом, но я не могу понять, как в Python (я использую 2.7).заменять или удалять определенные символы юникода в python

Чтобы быть ясным, я бы идеально хотел сохранить строку в юникоде, просто смогу заменить определенные символы.

Например:

thisToken = u'tandh\u2013bm' 
print(thisToken) 

печатает слово с м-тире в середине. Я просто хотел бы удалить m-dash. (Но не с помощью индексации, потому что я хочу быть в состоянии сделать это в любом месте я нахожу эти конкретные символы.)

Я пытаюсь использовать replace, как вы бы с любым другим символом:

newToke = thisToken.replace('\u2013','') 
print(newToke) 

но просто не работает. Буду признателен за любую оказанную помощь. Seth

+0

, если вы используете 'от __future__ импорта unicode_literals' в верхней части файла, все строковые литералы автоматически юникода, и это помогло бы здесь (но остерегайтесь сюрпризов, когда некоторые строки должны быть байт, вам может использовать 'b' для них). – RemcoGerlich

ответ

5

Строка, которую вы ищете для замены, также должна быть строкой Unicode. Попробуйте:

newToke = thisToken.replace(u'\u2013','') 
+1

На самом деле было бы лучше, если бы второй аргумент был 'u''' :-) – RemcoGerlich

0

Вы можете увидеть ответ на этот пост: How to replace unicode characters in string with something else python?

декодировать строку в Unicode. Если предположить, что это UTF-8 кодировке:

str.decode("utf-8") 

Вызовите заменить метод и обязательно передать ему строку Unicode в качестве первого аргумента:

str.decode("utf-8").replace(u"\u2022", "") 

Encode обратно в UTF-8, если это необходимо:

str.decode("utf-8").replace(u"\u2022", "").encode("utf-8") 
Смежные вопросы