2016-04-01 203 views
3

我想從字符串中刪除一個' - '字符,使用下面兩行,但它仍然返回原始字符串。如果我執行底部的兩行,它可以工作,sha和sha2都是字符串。有任何想法嗎?刪除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()) 

回答

5

Python中的字符串是不可變的 - .join不會改變的字符串,它會創建一個新的字符串(這是你所看到打印的內容)。

您需要的結果實際上重新綁定到名稱,以便它看起來像在本地命名空間改變了字符串:

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

還要注意的是,在表達x.join(...)x是它得到的東西插入在迭代中的每個項目之間傳遞給join。在這種情況下,你不想在你的字符之間插入任何額外的東西,所以x應該是空字符串(正如我在上面所用的)。

+0

謝謝你,這就是問題所在。 – iheartcpp

5

您是不是要找:

print ''.join(c for c in sha2 if c.isalnum()) 
相關問題