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