Python正则去掉字符串中的特殊符号\t \r \n

  • Post author:
  • Post category:python


1.问题现场

目的:去掉字符串中的特殊符号,比如\t \r \n。

结果:同样的正则处理代码,得到的结果不同。

maxos:

# -*- encoding:utf-8 -*-
import torch, re
s = '[可怜][可怜][可怜][可怜]那天下像张开的弓,一支支封锁,试图用炎热将同学们打倒。\r\t \n  我忍耐着阳光的炙烤     ,艰难地能格外开恩,让“体育课要进行1000米测试!”这       1'
print('---s before : ', s)
print(type(s))
s = re.sub(r'\s{2,}', '', s)
print('---s after :', s)

输出:
	 
  我忍耐着阳光的炙烤     ,艰难地能格外开恩,让“体育课要进行1000米测试!”这       1
<class 'str'>
---s after : [可怜][可怜][可怜][可怜]那天下像张开的弓,一支支封锁,试图用炎热将同学们打倒。我忍耐着阳光的炙烤,艰难地能格外开恩,让“体育课要进行1000米测试!”这1

linux:

# -*- encoding:utf-8 -*-
import torch, re
s = '[可怜][可怜][可怜][可怜]那天下像张开的弓,一支支封锁,试图用炎热将同学们打倒。\r\t \n  我忍耐着阳光的炙烤     ,艰难地能格外开恩,让“体育课要进行1000米测试!”这       1'
print('---s before : ', s)
s = re.sub(r'\s{2,}', '', s)
print('---s after :', s)

输出:
(be) [op@algo src]$ python test.py
---s before :  [可怜][可怜][可怜][可怜]那天下像张开的弓,一支支封锁,试图用炎热将同学们打倒。
  我忍耐着阳光的炙烤     ,艰难地能格外开恩,让“体育课要进行1000米测试!”这       1
---s after : [可怜][可怜][可怜][可怜]那天下像张开的弓,一支支封锁,试图用炎热将同学们打倒。我忍耐着阳光的炙烤,艰难地能格外开恩,让“体育课要进行1000米测试!”这1

linux系统和mac os系统,使用Python3.6对字符串处理时,它们打印的内容不一致,使用同样的正则处理后的结果也不一致。主要表现在对字符串中特殊符号的作用不同,直观感受是:linux系统上的正则生效了,maxos上的正则没有生效。

原因:猜测两个系统对\t \r \n的显示形式不同,编码方式不同,有何不同,暂且不知。

其他待续ing

2.测试及解决

本地测试时,从打印信息来看,正则没有生效,稀里糊涂。



版权声明:本文为pearl8899原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。