在python中从字符串中删除特殊字符

在python中从字符串中删除特殊字符,python,Python,我试图使用下面的两行从字符串中删除“-”字符,但它仍然返回原始字符串。如果我执行底部的两行,它就会工作,sha和sha2都是字符串。有什么想法吗 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.is

我试图使用下面的两行从字符串中删除“-”字符,但它仍然返回原始字符串。如果我执行底部的两行,它就会工作,sha和sha2都是字符串。有什么想法吗

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())

python字符串是不可变的--
。join
不会更改字符串,它会创建一个新字符串(这就是您看到的)

实际上,您需要将结果重新绑定到名称,以使其看起来像在本地命名空间中更改的字符串:

sha2 = ''.join(c for c in sha2 if c.isalnum())
还要注意的是,在表达式
x.join(…)
中,
x
是在传递给
join
的iterable中的每个项之间插入的内容。在这种情况下,您不想在字符之间插入任何额外的内容,因此
x
应该是空字符串(如上所述)。

您的意思是:

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

谢谢,这就是问题所在。