Python - 如何删除字符串中的隐藏字符?
有时候,我会遇到一些字符串里面有奇怪的字符。这些字符在浏览器里看不见,但它们确实存在于字符串中,并且在用len()计算长度时会被算上。那我该怎么去掉这些字符呢?用strip()方法可以去掉普通的空格,但对这些奇怪的符号却没用。
4 个回答
6
收集你想要保留的字符,然后把其他的字符去掉,像这样:
import re
text = re.sub("[^a-z0-9]+","", text, flags=re.IGNORECASE)
这样做会去掉除了小写字母a到z、大写字母A到Z和数字0到9以外的所有字符。
16
你可以使用 str.isprintable() 来过滤你的字符串(这个方法来自于 PEP-3138):
output_str = ''.join(c for c in input_str if c.isprintable())
18
可以使用 string
模块中的字符类别。如果你想允许所有可打印的字符,可以这样做:
from string import printable
new_string = ''.join(char for char in the_string if char in printable)
在你提到的答案基础上,你也可以用 re.sub
来实现这个功能:
new_string = re.sub("[^{}]+".format(printable), "", the_string)
另外,如果你想查看字符串中的所有字符,包括那些不可打印的字符,你可以这样做:
print repr(the_string)
这样会显示像 \x00
这样的不可打印字符。