in

python: ¿cómo puedo eliminar una nueva línea final?

apple touch icon@2

Estoy burbujeando mi respuesta basada en expresiones regulares de una que publiqué anteriormente en los comentarios de otra respuesta. Creo que usando re es una solución más clara y explícita a este problema que str.rstrip.

>>> import re

Si desea eliminar uno o más arrastrando caracteres de nueva línea:

>>> re.sub(r'[nr]+$', '', 'nxrn')
'nx'

Si desea eliminar caracteres de nueva línea en todas partes (no solo al final):

>>> re.sub(r'[nr]+', '', 'nxrn')
'x'

Si desea eliminar solo 1-2 caracteres de nueva línea al final (es decir, r, n, rn, nr, rr, nn)

>>> re.sub(r'[nr]{1,2}$', '', 'nxrnrn')
'nxr'
>>> re.sub(r'[nr]{1,2}$', '', 'nxrnr')
'nxr'
>>> re.sub(r'[nr]{1,2}$', '', 'nxrn')
'nx'

Tengo la sensación de que lo que la mayoría de la gente realmente quiere aquí, es eliminar solo uno aparición de un carácter de nueva línea al final, ya sea rn o n y nada más.

>>> re.sub(r'(?:rn|n)$', '', 'nxnn', count=1)
'nxn'
>>> re.sub(r'(?:rn|n)$', '', 'nxrnrn', count=1)
'nxrn'
>>> re.sub(r'(?:rn|n)$', '', 'nxrn', count=1)
'nx'
>>> re.sub(r'(?:rn|n)$', '', 'nxn', count=1)
'nx'

(Los ?: es crear un grupo de no captura).

(Por cierto, esto es no qué '...'.rstrip('n', '').rstrip('r', '') hace que puede que no sea claro para otros que se topan con este hilo. str.rstrip quita tantos caracteres finales como sea posible, por lo que una cadena como foonnn daría como resultado un falso positivo de foo mientras que es posible que haya querido conservar las otras líneas nuevas después de eliminar una sola al final).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Java: la clase Hashtable

gfg 200x200 min

Combinar ordenación para listas vinculadas