2017-06-28 1 views
1

J'essaye de télécharger des articles utilisant Article de newspaper, et essayant de tokenize les mots using nltkword_tokenizer. Le problème est que, lorsque j'essaie d'imprimer le texte de l'article analysé, certains de ces articles ont des guillemets spéciaux comme , , , qui ne sont pas filtrés par le tokenizer, comme il le ferait normalement ' et ".Enlever des guillemets spéciaux et d'autres caractères

Existe-t-il un moyen de remplacer ces guillemets spéciaux par des guillemets normaux, ou mieux de supprimer tous les caractères spéciaux que le jeton peut manquer?

J'ai essayé d'enlever ces caractères spéciaux en les mentionnant explicitement dans le code, mais cela me donne l'erreur Non-UTF-8 code starting with '\x92'.

Répondre

1

L'utilisation du package unidecode remplacerait normalement ces caractères par des UTF-8.

from unidecode import unidecode 
text = unidecode(text) 

Un inconvénient, cependant, est que vous aussi changer certains caractères (par exemple ceux surdimensionnée) que vous souhaitez conserver. Si tel est le cas, une option est d'utiliser regular expressions pour effacer spécifiquement (ou remplacer) certains caractères spéciaux pré-identifiés:

import re 
exotic_quotes = ['\\x92'] # fill this up 
text = re.sub(exotic_quotes, "'", text) # changing the second argument to fill the kind of quote you want to replace the exotic ones with 

J'espère que cela aide!

+0

Merci! Cela fonctionne parfaitement. Est-il possible de supprimer complètement les mots avec ces caractères non utf-8? Parce que pour mon application spécifique, je n'ai pas vraiment besoin de caractères spéciaux ou de ponctuation, juste les mots utf-8 de l'article. –

+1

Vous êtes les bienvenus. L'utilisation de 'unidecode' devrait remplacer tous les caractères non utf-8, mais garder les signes de ponctuation, etc. Si vous voulez garder des lettres (et des espaces) seulement, utilisez une expression régulière:' text = re.sub ('[^ A- Za-z] ',' ', texte) '. Et si vous voulez vous débarrasser de mots contenant un caractère non-utf8, utilisez des expressions régulières plus complexes! – Archeo