Mam kilka takich ciągów alfanumerycznych
listOfNum = ['000231512-n','1209123100000-n00000','alphanumeric0000', '000alphanumeric']
Pożądanym wyjściem do usunięcia końcowych zer byłoby:
listOfNum = ['000231512-n','1209123100000-n','alphanumeric', '000alphanumeric']
Sygnał wyjściowy na czołowych zer, to:
listOfNum = ['231512-n','1209123100000-n00000','alphanumeric0000', 'alphanumeric']
Chęć usunięcia zer wiodących i końcowych wyglądałaby następująco:
listOfNum = ['231512-n','1209123100000-n', 'alphanumeric', 'alphanumeric']
Na razie robię to w następujący sposób, proszę zasugerować lepszy sposób, jeśli jest:
listOfNum = ['000231512-n','1209123100000-n00000','alphanumeric0000', \
'000alphanumeric']
trailingremoved = []
leadingremoved = []
bothremoved = []
# Remove trailing
for i in listOfNum:
while i[-1] == "0":
i = i[:-1]
trailingremoved.append(i)
# Remove leading
for i in listOfNum:
while i[0] == "0":
i = i[1:]
leadingremoved.append(i)
# Remove both
for i in listOfNum:
while i[0] == "0":
i = i[1:]
while i[-1] == "0":
i = i[:-1]
bothremoved.append(i)
s = '0'
?s.strip("0") or "0"
: jeśli twój ciąg zamieni się w pusty ciąg, zostanie on oceniony jakoFalse
przez lub i zostanie zastąpiony żądanym ciągiem"0"
Usuń wiodące + końcowe „0”:
Usuń wiodące „0”:
Usuń końcowe „0”:
źródło
Możesz to po prostu zrobić za pomocą bool:
źródło
alphanumeric0000
żądaniem OP.Czy próbowałeś z stripem () :
źródło
str.strip
jest najlepszym podejściem do tej sytuacji, alemore_itertools.strip
jest również rozwiązaniem ogólnym, które usuwa zarówno elementy początkowe, jak i końcowe z iterowalnego:Kod
Detale
Zauważ, że tutaj usuwamy zarówno początkowe, jak i końcowe
"0"
s spośród innych elementów, które spełniają predykat. To narzędzie nie jest ograniczone do łańcuchów.Zobacz także dokumentację, aby uzyskać więcej przykładów
more_itertools.strip
: zdejmij oba końcemore_itertools.lstrip
: zdejmij lewy koniecmore_itertools.rstrip
: usuń prawy koniecmore_itertools
jest biblioteką innej firmy, którą można zainstalować za pośrednictwem> pip install more_itertools
.źródło
Zakładając, że masz na liście inne typy danych (i nie tylko ciąg), spróbuj tego. To usuwa końcowe i wiodące zera z ciągów i pozostawia inne typy danych nietknięte. Obsługuje to również specjalny przypadek s = „0”
na przykład
źródło