Sto cercando di rimuovere gli ultimi 3 caratteri da una stringa in Python, non so cosa siano questi caratteri, quindi non posso usarli rstrip
, devo anche rimuovere qualsiasi spazio bianco e convertirli in maiuscolo
un esempio potrebbe essere:
foo = "Bs12 3ab"
foo.replace(" ", "").rstrip(foo[-3:]).upper()
Questo funziona e mi dà BS12 che è quello che voglio, tuttavia se gli ultimi 4 ° e 3 ° carattere sono uguali, perdo entrambi, ad esempio se foo = "BS11 1AA"
ottengo solo'BS'
esempi di foo
potrebbero essere:
BS1 1AB
bs11ab
BS111ab
La stringa può contenere 6 o 7 caratteri e devo eliminare gli ultimi 3 (supponendo che non vi siano spazi bianchi)
Qualche consiglio?
''.join(foo.split())
è meglio difoo.replace(' ', '')
, quando usato su stringhe unicode perché rimuove qualsiasi carattere di spazio bianco , oltre al' '
carattere (in particolare, vengono rimossi anche gli spazi non spezzanti). Ciò dettoreplace()
è probabilmente molto più veloce, quindi può essere usato se, diciamo, le stringhe di input sono note per essere codificate in ASCII, che ha solo un carattere spaziale (sto usando la terminologia di Python 2, qui.)