2016-11-01 1 views
1

J'ai un dictionnaire comme:Comment supprimer des caractères non alphanumériques dans un dictionnaire en utilisant python

{...., '5': 24, '/': 25' , 'a': 26' , ....}

Comment puis-je supprimer les ponctuations et les chiffres afin de conserver uniquement les caractères alphanumériques dans le dictionnaire?

Je peux faire une manière traditionnelle de supprimer ces éléments en indexant la clé, mais existe-t-il un moyen efficace de les supprimer en utilisant l'expression régulière?

Répondre

4

avec le dictionnaire d:

d = {key: value for key, value in d.items() if key.isalpha()} 
+1

J'ai utilisé cette méthode, je me demande s'il existe un moyen d'utiliser RexExp? – Kun

+1

En outre, les chiffres sont toujours inclus dans le dictionnaire – Kun

+0

Vous pourriez utiliser une expression rationnelle au lieu de 'isalnum', mais il n'y a vraiment aucun point. Pour vérifier les chaînes courtes comme celle-ci, les frais généraux ne valent pas la peine et cela finit inutilement de compliquer le problème. –

1

Si vous souhaitez modifier votre dict en place et ne pas créer une nouvelle:

for key in list(d): 
    if not key.isalpha(): 
     del d[key] 

mise à jour

J'ai ajouté le list pour python3, donc il va créer une copie des clés de dict, si vous ne le faites pas, vous aurez RuntimeError: dictionary changed size during iteration

+1

si vous n'utilisez pas la valeur que vous pourriez aussi faire 'pour la clé d:' –

+0

J'ai eu cette erreur: RuntimeError: dictionnaire a changé la taille pendant l'itération – Kun

+0

@PatrickHaugh droite, fait une petite mise à jour afin que le code fonctionne sur python3 –