¿Cómo se recortan los espacios en blanco?

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

Ejemplo: t cadena de ejemplocadena de ejemplo.

Comentarios sobre la pregunta (7)
Solución

Espacio 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 señala thedz, se puede proporcionar un argumento para eliminar caracteres arbitrarios a cualquiera de estas funciones de esta manera:

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

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

Los ejemplos anteriores sólo eliminan los caracteres de los lados izquierdo y derecho de las cadenas. Si quiere eliminar también los caracteres del centro de una cadena, pruebe con re.sub:

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

Esto debería imprimirse:

astringexample
Comentarios (11)

El método "Trim" de Python se llama "Strip":

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

Para los espacios en blanco iniciales y finales:

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

En caso contrario, funciona una expresión regular:

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

También puedes usar una función muy simple y básica: [str.replace()][1], 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. [1]: https://docs.python.org/2/library/stdtypes.html#str.replace

Comentarios (1)
#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 ']
Comentarios (0)

Nadie ha publicado estas soluciones regex todavía.

Coincidencia:

>>> 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 "sólo espacios" introducir el caso de forma 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 "", line 1, in 
AttributeError: 'NoneType' object has no attribute 'group'

Si usas re.sub, puedes eliminar el espacio blanco interior, lo que podría ser indeseable.

Comentarios (0)

...y la de los demás; (re.sub(' +', ' ',(my_str.replace('\n',' ')))).strip()

Esto eliminará todos los espacios no deseados y los caracteres de la 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á:

' a       b \N c ' se cambiará a 'a b c'

Comentarios (0)

El espacio en blanco incluye espacio, pestañas y CRLF. Así que una elegante y unica función de cadena que podemos usar es traducir.

`' hola apple'.translate(None, ' \"No, no, no, no, no, no

O si quieres ser minucioso

import string
' hello  apple'.translate(None, string.whitespace)
Comentarios (0)
    something = "\t  please_     \t remove_  all_    \n\n\n\nwhitespaces\n\t  "

    something = "".join(something.split())

salida: por favor, retire todos los espacios en blanco

Comentarios (1)

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

EJEMPLO:

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

Esto se imprimirá Me encantan las patatas.

En lugar de: Me encantan las patatas.

En tu caso, ya que estarías tratando de conseguir el paseo del \ ~ - Hacer sep="\ ~ -quot;;

Comentarios (0)

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'
Comentarios (0)

Si quieres recortar el espacio en blanco sólo al principio y al final de la cadena, puedes hacer algo como esto:

some_string = "    Hello,    world!\n    "
new_string = some_string.strip()
# new_string is now "Hello,    world!"

Esto funciona de manera muy parecida al método QString::trimmed() de Qt&#39, ya que elimina los espacios blancos delanteros y traseros, mientras que deja en paz los espacios blancos internos.

Pero si quieres algo como el método Qt&#39::simplified() de QString, que no sólo elimina los espacios en blanco anteriores y posteriores, sino también "squishes" todos los espacios en blanco internos consecutivos a un carácter espacial, se puede usar una combinación de .split() y `" "coño;... unir", así:

some_string = "\t    Hello,  \n\t  world!\n    "
new_string = " ".join(some_string.split())
# new_string is now "Hello, world!"

En este último ejemplo, cada secuencia de espacios en blanco internos fue reemplazada por un solo espacio, mientras que se seguía recortando el espacio en blanco al principio y al final de la cadena.

Comentarios (0)

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 sólo para quitar "n;, "r"; y "cociente"; sólo. No elimina los espacios extra.

Comentarios (0)

para eliminar los espacios en blanco de la mitad de la cuerda

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

salida:

ATGCGACACGATCGACC
Comentarios (1)

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"
Comentarios (6)