Maison >développement back-end >Tutoriel Python >Comment supprimer sélectivement les caractères non-ASCII en préservant les espaces et les points ?

Comment supprimer sélectivement les caractères non-ASCII en préservant les espaces et les points ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-19 20:32:02943parcourir

How to Selectively Remove Non-ASCII Characters Preserving Spaces and Periods?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn