Próbuję usunąć ostatnie 3 znaki z ciągu w pythonie, nie wiem, jakie to znaki, więc nie mogę ich użyć rstrip, muszę też usunąć wszelkie spacje i przekonwertować je na duże
przykładem może być:
foo = "Bs12 3ab"
foo.replace(" ", "").rstrip(foo[-3:]).upper()
To działa i daje mi BS12, czego chcę, jednak jeśli ostatnie 4 i 3 znaki są takie same, tracę oba, np. Jeśli foo = "BS11 1AA"po prostu dostaję'BS'
przykładami foomogą być:
BS1 1AB
bs11ab
BS111ab
Ciąg może mieć 6 lub 7 znaków i muszę porzucić ostatnie 3 (zakładając brak spacji)
Jakieś wskazówki?
''.join(foo.split())jest to lepsze niżfoo.replace(' ', ''), gdy jest używane na łańcuchach Unicode, ponieważ usuwa wszelkie białe znaki, oprócz' 'znaku (w szczególności, spacje nierozdzielające są również usuwane). To powiedziawszyreplace()jest prawdopodobnie znacznie szybsze, więc można go użyć, jeśli, powiedzmy, ciągi wejściowe są zakodowane w ASCII, który ma tylko jeden znak spacji (używam tutaj terminologii Python 2).