2013-07-16 20 views
6

Come posso rimuovere una stringa con tutti gli \n e \t in python oltre che utilizzando strip()?Rimuovere n o t da una stringa specifica

voglio formattare una stringa come "abc \n \t \t\t \t \nefg" a "abcefg "?

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

e il risultato è None

risposta

10

Sembra che anche voi volete rimuovere gli spazi. Si può fare qualcosa di simile,

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

Un altro modo sarebbe fare,

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

Parametri per 'translate()' cambiati in Python> 3. Ora prende una tabella di traduzione che può essere generata da 'str.maketrans()'. https://docs.python.org/3/library/stdtypes.html#str.translate – gruentee

3

Ti piace questa:

import re 

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

Alcuni approcci più non-regex, per varietà:

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

Questo è significativamente più veloce di re. – seth

+0

@seth: Penso che 'translate' di solito esce vincitore in questi giochi, dove è applicabile. Semplicemente non mi interessa per le espressioni regolari. : ^) – DSM

Problemi correlati