Maison >développement back-end >Tutoriel Python >Comment supprimer sélectivement les caractères non-ASCII en préservant les espaces et les points ?
Suppression sélective des caractères non-ASCII
Travailler avec des données textuelles implique souvent la nécessité de supprimer les caractères non-ASCII, tout en préservant certains symboles comme les espaces et les périodes. Bien que les méthodes de filtrage de base puissent supprimer tous les caractères non-ASCII, cela peut ne pas être souhaitable dans certains cas.
Considérons le code suivant :
<code class="python">def onlyascii(char): if ord(char) < 48 or ord(char) > 127: return '' else: return char</code>
Ce code supprime tous les caractères avec des valeurs ASCII. inférieur à 48 ou supérieur à 127, supprimant ainsi le texte des caractères non-ASCII. Cependant, il supprime également les espaces (ASCII 32) et les points (ASCII 46).
Pour supprimer sélectivement les caractères non-ASCII tout en préservant les espaces et les points, nous pouvons exploiter le module string.printable de Python :
<code class="python">import string printable = set(string.printable) filtered_data = filter(lambda x: x in printable, data)</code>
L'ensemble string.printable contient tous les caractères imprimables sur le système, y compris les chiffres, les lettres, les symboles, les espaces et les points. En utilisant cet ensemble comme filtre, nous pouvons supprimer tous les caractères non imprimables de la chaîne.
Par exemple, si nous avons la chaîne "somex00string. withx15 funny caractères":
<code class="python">s = "some\x00string. with\x15 funny characters" ''.join(filter(lambda x: x in printable, s))</code>
Le résultat sera :
'somestring. with funny characters'
Cette méthode supprime efficacement les caractères non-ASCII tout en préservant les espaces et les points, fournissant ainsi une chaîne propre pour un traitement ultérieur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!