Estoy tratando de eliminar los últimos 3 caracteres de una cadena en Python, no sé cuáles son estos caracteres, así que no puedo usarlos rstrip
, también necesito eliminar cualquier espacio en blanco y convertirlos a mayúsculas
Un ejemplo sería:
foo = "Bs12 3ab"
foo.replace(" ", "").rstrip(foo[-3:]).upper()
Esto funciona y me da BS12, que es lo que quiero, sin embargo, si los últimos 4 ° y 3 ° caracteres son iguales, pierdo ambos, por ejemplo, si foo = "BS11 1AA"
solo obtengo'BS'
ejemplos de foo
podrían ser:
BS1 1AB
bs11ab
BS111ab
La cadena podría tener 6 o 7 caracteres y necesito soltar los últimos 3 (suponiendo que no haya espacios en blanco)
¿Algun consejo?
''.join(foo.split())
es mejor quefoo.replace(' ', '')
, cuando se usa en cadenas Unicode porque elimina cualquier carácter de espacio en blanco , además del' '
carácter (en particular, también se eliminan los espacios que no se rompen). Dicho estoreplace()
probablemente sea 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 (estoy usando la terminología de Python 2, aquí)No funciona como se espera porque la tira está basada en caracteres. Necesitas hacer esto en su lugar:
fuente
fuente
Es posible que haya malinterpretado ligeramente rstrip, no elimina una cadena sino cualquier carácter de la cadena que especifique.
Me gusta esto:
Entonces, en lugar de eso, solo usa
(después de reemplazar el espacio en blanco con nada)
fuente
fuente
Intento evitar expresiones regulares, pero esto parece funcionar:
string = re.sub("\s","",(string.lower()))[:-3]
fuente
¿Qué tiene de malo esto?
fuente
split
slice
concentrate
Este es un buen entrenamiento para principiantes y es fácil de lograr.
Otro método avanzado es una función como esta:
Y para esta pregunta, solo desea eliminar los últimos caracteres, para que pueda escribir así:
Creo que te preocupan cuáles 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 if:
fuente
¿No estás realizando las operaciones en el orden incorrecto? Tu requisito parece ser
foo[:-3].replace(" ", "").upper()
fuente
Depende de su definición de espacio en blanco. En general, llamaría espacios en blanco como espacios, tabulaciones, saltos de línea y retornos de carro. Si esta es su definición, desea utilizar una expresión regular con \ s para reemplazar todos los caracteres de espacios en blanco:
fuente