Estoy tratando de eliminar los últimos 3 caracteres de una cadena en Python, no sé cuáles son estos caracteres, así que no puedo usar rstriptambién necesito eliminar cualquier espacio en blanco y convertirlo a mayúsculas.
Esto funciona y me da "BS12" que es lo que quiero, sin embargo, si los últimos caracteres 4 y 3 son iguales, pierdo ambos, por ejemplo, si foo = "BS11 1AA" acabo de recibir "BS".
Ejemplos de foo podría ser:
BS1 1AB
bs11ab
BS111ab
La cadena podría tener 6 o 7 caracteres y necesito eliminar los últimos 3 (suponiendo que no haya espacios en blanco).
Esta pregunta es confusa. El título solicita eliminar los últimos 3 caracteres de una cadena, pero el primer ejemplo elimina 4 caracteres y parece haber más requisitos que solo eliminar una cantidad determinada de caracteres (como eliminar también los espacios en blanco).
– mkrieger1
14 de julio a las 9:54
Eliminando todos y cada uno de los espacios en blanco:
foo = ''.join(foo.split())
Eliminando los últimos tres caracteres:
foo = foo[:-3]
Convirtiendo a mayúsculas:
foo = foo.upper()
Todo ese código en una línea:
foo = ''.join(foo.split())[:-3].upper()
Me gustaría señalar que ''.join(foo.split()) es mejor que foo.replace(' ', '')cuando se usa en cadenas Unicode porque elimina cualquier espacios en blanco carácter, además de la ' ' (en particular, también se eliminan los espacios que no se separan). Eso dijo replace() es probablemente mucho más rápido, por lo que se puede usar si, por ejemplo, se sabe que las cadenas de entrada están codificadas en ASCII, que solo tiene un carácter de espacio (aquí estoy usando la terminología de Python 2).
– Eric O Lebigot
14 de marzo de 2013 a las 1:33
No funciona como esperas porque la tira se basa en los personajes. Necesitas hacer esto en su lugar:
foo = foo.replace(' ', '')[:-3].upper()
Eso no elimina WHITESPACE como solicitó el OP; elimina solo los caracteres de ESPACIO.
Intento evitar las expresiones regulares, pero esto parece funcionar:
string = re.sub("\s","",(string.lower()))[:-3]
split
slice
concentrate
Este es un buen ejercicio para principiantes y es fácil de lograr.
Otro método avanzado es una función como esta:
def trim(s):
return trim(s[slice])
Y para esta pregunta, solo desea eliminar los últimos caracteres, por lo que puede escribir así:
def trim(s):
return s[ : -3]
Creo que has terminado de preocuparte por lo que son esos tres personajes, así que perdiste. ¡Solo desea eliminar los últimos tres, sin embargo, quiénes son!
Si desea eliminar algunos caracteres específicos, puede agregar algunos juicios:
def trim(s):
if [conditions]: ### for some cases, I recommend using isinstance().
return trim(s[slice])
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Configurar y más información
Esta pregunta es confusa. El título solicita eliminar los últimos 3 caracteres de una cadena, pero el primer ejemplo elimina 4 caracteres y parece haber más requisitos que solo eliminar una cantidad determinada de caracteres (como eliminar también los espacios en blanco).
– mkrieger1
14 de julio a las 9:54