2013-07-16 5 views
6

Как я могу удалить строку со всеми \n и \t в python, кроме использования strip()?Удалить 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

Смежные вопросы