2017-07-17 6 views
0

Bonjour,regex Python pour supprimer les caractères étranges

J'ai une liste de chaîne avec des caractères étranges (comme: ). Par exemple:

'Replay fortement conseillé �\x9f\x98\x82�\x9f\x98\x82' 

Ou:

'Le papa du mois �\x9f\x91\x8a' 

Je veux supprimer \ x9F \ x91 \ X8a et \ x9F \ x98 \ x82 \ x9F \ x98 \ x82 de ces chaînes.

J'ai essayé cette regex: ((.?)\\x[0-9]([a-z]|[0-9])(.?)+)+ mais cela ne fonctionne pas. Je suis un débutant en regex alors je demande de l'aide. Merci

+0

Enlever le tag python, votre question concerne uniquement les expressions régulières. –

+2

@ThomasDussaut Je ne suis pas d'accord. Je pense que la réponse correcte serait peut-être que l'OP corrige le problème d'encodage qui a donné naissance aux étranges caractères en premier lieu. –

+0

Faites des recherches sur regex et vous trouverez la réponse. –

Répondre

0

Dans mon expérience, il est un peu plus sûr de créer une liste de caractères «sûrs» à conserver. Ce que vous cherchez à faire aujourd'hui, c'est «réparer» cette phrase et se débarrasser des trucs dégoûtants. Mais que se passe-t-il si d'autres trucs de goofball apparaissent? J'ai une exigence pour les données que je processus pour ne garder que « ascii standard » tel que décidé par un propriétaire d'entreprise, donc j'utilise cette expression rationnelle:

text = re.sub("[^\x20-\x7E]", "", text) 

De cette façon, je retire tout ce qui est pas dans cette classe de caractères, à peu près tout ce qui n'est pas sur un clavier standard. Vous aurez peut-être plus de chance dans cette voie. Il est difficile de prédire quels personnages poubelles vont arriver, et vous finissez par éditer votre regex pour continuer à ajouter des choses à supprimer. Faire une liste de choses à garder :)

+1

Merci, fonctionne très bien. Je l'ai modifié pour garder les caractères requis 're.sub ('[^^ (éèêùçà) \ x20- \ x7E]', '', texte)' – Nazan

2

Il est probablement préférable de gérer ces caractères au lieu de les supprimer, mais si vous voulez les supprimer en Python, vous pouvez le faire sans expressions régulières.

text.decode("ascii", "ignore") 

Cette ligne va décoder un tableau d'octets en Python et ne conserver que des caractères ASCII.

+0

convertir la chaîne en octets requis: 'text = bytes (texte," utf-8 ")' – hadi

1

Pour contenir des caractères spécifiques dans la chaîne comme é dans conseillé. Vous devez trouver la sous-chaîne que vous voulez supprimer Et pour ce faire, vous devez trouver le début et la fin de la sous-chaîne.

Cela se fait mieux avec les méthodes à cordes

pour un exemple:

si dans une chaîne caractère de début de suppression est:

et fin de la chaîne LEN de la chaîne:

re.sub(r'�.*','', 'Replay fortement conseillé �\x9f\x98\x82�\x9f\x98\x82')

J'espère que cela pourrait vous aider à