2016-11-01 6 views
1

Ich habe ein Wörterbuch wie:Wie nicht alphanumerische Zeichen in einem Wörterbuch entfernen Python mit

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

Wie kann ich die Interpunktionen und Ziffern entfernen, um nur die alphanumerischen Zeichen im Wörterbuch zu behalten?

Ich kann eine herkömmliche Methode zum Entfernen dieser Elemente durch Indizieren des Schlüssels verwenden, aber gibt es eine effiziente Möglichkeit, sie zu entfernen, indem Sie regulären Ausdruck verwenden?

Antwort

4

mit Wörterbuch d:

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

Ich habe diese Methode verwendet, ich frage mich, gibt es eine Möglichkeit, RexExp zu verwenden? – Kun

+1

Auch die Ziffern sind noch im Wörterbuch enthalten – Kun

+0

Sie könnten eine Regexp anstelle von 'isalnum' verwenden, aber es gibt wirklich keinen Sinn. Zum Überprüfen kurzer Strings wie diesem ist der Overhead nicht wert und es endet unnötig das Problem zu verkomplizieren. –

1

Wenn Sie Ihre dict an seinem Platz bearbeiten und nicht einen neuen erstellen:

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

Update

ich die list hinzugefügt für python3, so wird es eine Kopie der Schlüssel des Dikts erstellen, wenn Sie das nicht tun, haben Sie RuntimeError: dictionary changed size during iteration

+1

Wenn Sie nicht den Wert verwenden, können Sie auch 'für Schlüssel in d:' –

+0

Ich hatte diesen Fehler: RuntimeError: Wörterbuch änderte die Größe während der Iteration – Kun

+0

@PatrickHaugh rechts, machte ein kleines Update, damit der Code auf Python3 funktioniert –

Verwandte Themen