left funcion python string whitespace trim strip

funcion - substring python



¿Cómo recortar los espacios en blanco? (14)

¿Existe una función de Python que recorte los espacios en blanco (espacios y tabulaciones) de una cadena?

Ejemplo: /t example string/texample string


(re.sub (''+'', '''', (my_str.replace (''/ n'', '''')))) strip ()

Esto eliminará todos los espacios no deseados y los caracteres de nueva línea. Espero que esto ayude

import re my_str = '' a b /n c '' formatted_str = (re.sub('' +'', '' '',(my_str.replace(''/n'','' '')))).strip()

Esto resultará:

''ab / nc'' se cambiará a ''ab c''


El método de trim Python se llama strip :

str.strip() #trim str.lstrip() #ltrim str.rstrip() #rtrim


En general, estoy usando el siguiente método:

>>> myStr = "Hi/n Stack Over /r flow!" >>> charList = [u"/u005Cn",u"/u005Cr",u"/u005Ct"] >>> import re >>> for i in charList: myStr = re.sub(i, r"", myStr) >>> myStr ''Hi Stack Over flow''

Nota: Esto es solo para eliminar "/ n", "/ r" y "/ t" solamente. No elimina espacios extra.


Esto eliminará todos los espacios en blanco y las nuevas líneas tanto del principio como del final de una cadena:

>>> s = " /n/t /n some /n text /n " >>> re.sub("^/s+|/s+$", "", s) >>> "some /n text"


Los espacios en blanco incluyen espacio, pestañas y CRLF . Por lo tanto, una función de cadena elegante y de una sola línea que podemos usar es la traducción .

'' hello apple''.translate(None, '' /n/t/r'')

O si quieres ser minucioso

import string '' hello apple''.translate(None, string.whitespace)


Los espacios en blanco en ambos lados:

s = " /t a string example/t " s = s.strip()

Espacio en blanco en el lado derecho:

s = s.rstrip()

Espacio en blanco en el lado izquierdo:

s = s.lstrip()

Como thedz señala thedz , puede proporcionar un argumento para quitar caracteres arbitrarios a cualquiera de estas funciones como esta:

s = s.strip('' /t/n/r'')

Esto eliminará cualquier espacio, /t , /n o /r caracteres del lado izquierdo, del lado derecho o de ambos lados de la cadena.

Los ejemplos anteriores solo eliminan las cadenas de los lados izquierdo y derecho de las cadenas. Si también desea eliminar caracteres del medio de una cadena, intente re.sub :

import re print re.sub(''[/s+]'', '''', s)

Eso debería imprimirse:

astringexample


Nadie ha publicado estas soluciones regex todavía.

Pareo:

>>> import re >>> p=re.compile(''//s*(.*//S)?//s*'') >>> m=p.match('' /t blah '') >>> m.group(1) ''blah'' >>> m=p.match('' /tbl ah /t '') >>> m.group(1) ''bl ah'' >>> m=p.match('' /t '') >>> print m.group(1) None

Buscando (tienes que manejar el caso de entrada de "solo espacios" de manera diferente):

>>> p1=re.compile(''//S.*//S'') >>> m=p1.search('' /tblah /t '') >>> m.group() ''blah'' >>> m=p1.search('' /tbl ah /t '') >>> m.group() ''bl ah'' >>> m=p1.search('' /t '') >>> m.group() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: ''NoneType'' object has no attribute ''group''

Si usa re.sub , puede eliminar el espacio en blanco interno, lo que podría ser indeseable.


Para espacios en blanco iniciales y finales:

s = '' foo /t '' print s.strip() # prints "foo"

De lo contrario, una expresión regular funciona:

import re pat = re.compile(r''/s+'') s = '' /t foo /t bar /t '' print pat.sub('''', s) # prints "foobar"


Si usa Python 3: En su declaración de impresión, termine con sep = "". Eso separará todos los espacios.

EJEMPLO:

txt="potatoes" print("I love ",txt,"",sep="")

Esto va a imprimir: me encantan las patatas.

En lugar de: me encantan las papas.

En tu caso, ya que estarías intentando obtener el / t, haz sep = "/ t"


También puede usar una función muy simple y básica: str.replace() , funciona con los espacios en blanco y las pestañas:

>>> whitespaces = " abcd ef gh ijkl " >>> tabs = " abcde fgh ijkl" >>> print whitespaces.replace(" ", "") abcdefghijkl >>> print tabs.replace(" ", "") abcdefghijkl

Simple y fácil.


intenta traducir

>>> import string >>> print ''/t/r/n hello /r/n world /t/r/n'' hello world >>> tr = string.maketrans(string.whitespace, '' ''*len(string.whitespace)) >>> ''/t/r/n hello /r/n world /t/r/n''.translate(tr) '' hello world '' >>> ''/t/r/n hello /r/n world /t/r/n''.translate(tr).replace('' '', '''') ''helloworld''


para eliminar espacios en blanco de la mitad de la cadena

$p = "ATGCGAC ACGATCGACC"; $p =~ s//s//g; print $p;

salida: ATGCGACACGATCGACC


something = "/t please_ /t remove_ all_ /n/n/n/nwhitespaces/n/t " something = "".join(something.split())

salida: please_remove_all_whitespaces


#how to trim a multi line string or a file s=""" line one /tline two/t line three """ #line1 starts with a space, #2 starts and ends with a tab, #3 ends with a space. s1=s.splitlines() print s1 ['' line one'', ''/tline two/t'', ''line three ''] print [i.strip() for i in s1] [''line one'', ''line two'', ''line three''] #more details: #we could also have used a forloop from the begining: for line in s.splitlines(): line=line.strip() process(line) #we could also be reading a file line by line.. e.g. my_file=open(filename), or with open(filename) as myfile: for line in my_file: line=line.strip() process(line) #moot point: note splitlines() removed the newline characters, we can keep them by passing True: #although split() will then remove them anyway.. s2=s.splitlines(True) print s2 ['' line one/n'', ''/tline two/t/n'', ''line three '']