Python - 如何删除字符串中的隐藏字符?

14 投票
4 回答
22817 浏览
提问于 2025-04-17 00:06

有时候,我会遇到一些字符串里面有奇怪的字符。这些字符在浏览器里看不见,但它们确实存在于字符串中,并且在用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 这样的不可打印字符。

撰写回答