Python - 如何从字符串中删除隐藏的标志?
有时我有一个奇怪的字符串。它们在浏览器中不可见,但是是字符串的一部分,并以len()计算。 我该如何摆脱它? Strip()删除正常空间,但不是那个标志。Python - 如何从字符串中删除隐藏的标志?
使用来自string
模块的字符类别。此外
new_string = re.sub("[^{}]+".format(printable), "", the_string)
,如果你想看到所有的字符:如果你想允许所有可打印字符,你可以在你的答案做
from string import printable
new_string = ''.join(char for char in the_string if char in printable)
大厦,您可以用re.sub
就此别过一个字符串,即使是那些不可打印,你总是可以做
print repr(the_string)
,它会显示之类的东西\x00
为不可打印的字符。
当然这是正确的答案。 – dotancohen
秒钟的答案像魅力一样工作,谢谢。 – Yehonatan
对于各种字符串分析,正则表达式是一种很好且非常通用的工具。如果速度有问题,字符串类中的“translate”方法也可以帮助你。
首先定义一个(“身份”)的映射,它不会改变任何东西:如果你想替换每个“一”由“B”,您修改映射
mapping = map(chr, range(256))
mapping[ord('a')] = 'b'
现在你建表的 “翻译” 方法:
table = "".join(mapping)
和
print "abc".translate(table)
打印“bbc”。
如果你真的要删除的“一”,你不修改上述映射,建立表,然后调用 翻译如下:
print "abc".translate(table, "a")
为您提供了“BC”。
建表之后,翻译方法非常快。
所以你的情况,你可以修改映射,使得所有多余的字符映射到一个空白
mapping = map(chr, range(256))
table = "".join(" " if c in unwanted_chars else c for c in map(chr, range(256)))
,并使用len("my string".translate(table).trim())
而忽略在一开始不想要的字符 和字符串的结尾。
或者您使用len("my string".translate(table, unwanted_chars))
这将忽略所有不需要的字符。
不错。当我再次投票时明天+1。我想过翻译,但懒得查找语法。 – agf
看到这个解决方案:http://*.com/questions/92438/stripping-non-printable-characters-from-a-string-in-python –