2013-07-16 33 views
6

如何在Python中使用除strip()之外的所有\n\t字符串?从给定的字符串中删除 n或 t

我想格式化像"abc \n \t \t\t \t \nefg""abcefg“的字符串?

result = re.match("\n\t ", "abc \n\t efg") 
print result 

和结果是None

回答

10

看起来你也想删除空格,你可以做这样的事情,

>>> import re 
>>> s = "abc \n \t \t\t \t \nefg" 
>>> s = re.sub('\s+', '', s) 
>>> s 
'abcefg' 

另一种方法是,

>>> s = "abc \n \t \t\t \t \nefg" 
>>> s = s.translate(None, '\t\n ') 
>>> s 
'abcefg' 
+0

参数'翻译()'在Python> 3改变。它现在需要一个可以由'str.maketrans()'生成的翻译表。 https://docs.python.org/3/library/stdtypes.html#str.translate – gruentee

3

像这样:

import re 

s = 'abc \n \t \t\t \t \nefg' 
re.sub(r'\s', '', s) 
=> 'abcefg' 
6

一些更多的非正则表达式的方法,对于各种:

>>> s="abc \n \t \t\t \t \nefg" 
>>> ''.join(s.split()) 
'abcefg' 
>>> ''.join(c for c in s if not c.isspace()) 
'abcefg' 
+1

这比re要快得多。 – seth

+0

@seth:我认为'translate'通常会在这些游戏中胜出,在适用的地方。我只是不在乎正则表达式。 :^) – DSM