【发布时间】:2015-10-27 14:02:25
【问题描述】:
我有一个似乎有很多空格的字符串(实际上在每个符号之间我看到一个空格)。为了清楚起见,这是字符串:
{ " d a t a " : { " i d " : " 1 0 b a 8 7 3 8 - b 0 0 9 - 4 1 2 0 - 9 e c 1 - 4 1 7 a 6 e a 1 a 6 1 f " , " t i m e " : 1 4 4 5 2 6 0 9 8 6 7 5 2 } , " e x p i r e s " : 1 4 5 3 0 9 6 7 8 6 7 5 2 }
我尝试像往常一样删除空格:
z = z.replace(" ","")
但它不起作用。例如这段代码:
print type(z), len(z)
z = z.replace(" ","")
print type(z), len(z)
打印以下内容:
<type 'str'> 198
<type 'str'> 198
因此,删除空格后,字符串的长度与之前相同。除此之外,我将新字符串(应该删除空格的位置)保存到文本文件中。当我用文本编辑器打开这个文件时,我确实看到了空格!如果我尝试使用文本编辑器(使用搜索和替换)删除它们,它们就会被删除。
那么,我的问题是为什么 Python 不能删除这些“特殊”空格以及如何删除它们?
【问题讨论】:
-
您是否尝试过检查,例如
z[0] == ' '(与实际空间比较),或ord(z[0]),或查看repr(z),或...这些数据来自哪里? -
来源是什么?它是 utf-16 编码的文本吗(也许您将零字节视为空白)?你试过
print z.decode('utf-16le')吗? -
可能是 unicode 吗?
-
您可以遍历字符串并查看每个字符是什么:
for c in my_str: print ord(c)。一个空格会产生32;其他值将指示您的未知字符是什么。 -
如果是任何实际的空格,你可以使用正则表达式:
import re; re.sub(r'\s','',z)
标签: python string replace special-characters