2016-05-05 3 views
-2

Я тяну твиты в python, используя tweepy. Он отображает все данные в формате Юникод. Например: тип печати (данные) дает мне <type 'unicode'>Удалить символы юникода python

В нем содержатся символы Юникода. Например: hello\u2026 im am fine\u2019s

Я хочу удалить все эти символы Юникода. Есть ли регулярное выражение, которое я могу использовать? str.replace не является жизнеспособным вариантом, так как символы юникода могут быть любыми значениями: от смайликов до юникодовых апострофов.

+1

Весь текст Unicode. Возможно, вы имеете в виду * не-ASCII-символы? –

+0

Да нет символов ascii. Это обычный текст на английском языке, перемежающийся с помощью \ u2026 и т. Д. – ashish1512

ответ

0
In [10]: from unicodedata import normalize 

In [11]: out_text = normalize('NFKD', input_text).encode('ascii','ignore') 

Попробуйте это.

Редактировать

На самом деле нормализуют Верните нормальную форму формы для строки unistr Unicode. Допустимыми значениями для формы являются «NFC», «NFKC», «NFD» и «NFKD». Если вы ЗАС больше о NFKD идти к этому link

In [12]: u = unichr(40960) + u'abcd' + unichr(1972) 
In [13]: u.encode('utf-8') 
Out[13]: '\xea\x80\x80abcd\xde\xb4' 
In [14]: u 
Out[14]: u'\ua000abcd\u07b4' 
In [16]: u.encode('ascii', 'ignore') 
Out[16]: 'abcd' 

Из приведенной выше коды вы получите то, что encode('ascii','ignore') делает.

Ref: https://docs.python.org/2/library/unicodedata.html#unicodedata.normalize

+0

data = {"text": "RT @ peddoc63: Похоже, что дни проституции и самофинансирования Трампа закончились. Ну, это заняло менее 12 часов \ ud83d \ ude44 https : \/\/t.co \/W7zaUK8 \ u2026 "} Над образцом. Когда я сделать out_text = нормализуют ('NFKD', данные) .encode ('ASCII', 'игнорировать') Это дает мне ошибку 'ASCII' кодек не может кодировать символы в позиции 119-120 – ashish1512

+0

@ ashish1512: почему вы передаете целый словарь в 'normalize()'? –

+0

Это не совсем словарь. Когда я печатаю тип (данные), он дает мне ashish1512

Смежные вопросы