2016-04-01 21 views
3

Ich versuche, ein '-' Zeichen aus einer Zeichenfolge mit den beiden folgenden Zeilen zu entfernen, aber es gibt immer noch die ursprüngliche Zeichenfolge zurück. Wenn ich die unteren zwei Zeilen ausführe, funktioniert es, sha und sha2 sind beide Zeichenfolgen. Irgendwelche Ideen?Entfernen von Sonderzeichen aus Zeichenfolge in Python

sha = hash_dir(filepath) # returns an alpha-numeric string 

print sha.join(c for c in sha if c.isalnum()) 

sha2 = "-7023680626988888157" 

print sha2.join(c for c in sha2 if c.isalnum()) 

Antwort

5

Python-Strings sind unveränderlich - .join wird die Zeichenfolge nicht ändern, wird es eine neue String erstellen (das ist, was Sie gedruckt sehen).

Sie müssen tatsächlich das Ergebnis auf den Namen, um rebind für sie wie die Zeichenfolge im lokalen Namensraum geändert aussehen:

sha2 = ''.join(c for c in sha2 if c.isalnum()) 

Beachten Sie auch, dass in dem Ausdruck x.join(...), x die Sache ist, die bekommt eingefügt zwischen jedem Element im iterablen an join weitergegeben. In diesem Fall möchten Sie nichts extra zwischen Ihren Zeichen einfügen, also sollte x die leere Zeichenfolge sein (wie ich oben verwendet habe).

+0

Vielen Dank, dass das Problem war. – iheartcpp

5

Meinten Sie:

print ''.join(c for c in sha2 if c.isalnum()) 
Verwandte Themen