需求:去除字符串中所有的空格。
python3去除中英文空格
比较方便,首先要导入正则表达式包:
import re
然后就可以去除空格了,其中\u3000是中文空格的unicode码,\s则是正则表达式里面英文空格的表示,s其实就是spacebar的简写:
s1="ab c"
re.sub(r'[\s\u3000]+','',s1) # 'abc'
这种去除并没有改变原始字符串的值,所以如果要使用结果,你需要保存到其它变量中。
python2的去除稍微复杂点,因为版本差异,python2,3的默认字符串编码是不同的。
-
python 2.x默认的字符编码、文件编码都是ASCII
-
python 3.x默认的字符编码是unicode,默认的文件编码是utf-8。
python2的国际化支持不如python3的方便。
新建字符串对比下:
python3:
>>> s1="ab c"
>>> s1
'ab\u3000\u3000c'
相同的字符串在python2中则是这样:
>>> s1="ab c"
>>> s1
'ab \xe3\x80\x80c'
这样一来在python2中先把字符串转换成unicode再替换就比较完美了。
python2去除中英文空格
先使用decode转换成unicode字符串s2
import re
s2=s1.decode('utf8')
s2
# u'ab\u3000\u3000c'
再生成一个正则表达式,注意字符串前面是有个u的,表明后面的字符串是unicode编码:
pattern = re.compile(u'[\s\u3000]+')
可以去除了:
>>> re.sub(pattern,'',s2)
# u'abc'
运行环境
python 2.7.17及python3.7.6