it-swarm.com.de

So löschen Sie das letzte Zeichen aus einer Zeichenfolge in einer Liste von Zeichenfolgen

Ich habe die Zeichenfolgen '80010', '80030', '80050' in einer Liste, wie in 

test = ['80010','80030','80050']

Wie kann ich das allerletzte Zeichen löschen (in diesem Fall die letzte Ziffer einer jeden Zeichenfolge, die eine 0 ist), sodass ich zu einer anderen Liste gelangen kann, die nur die ersten vier Ziffern/Zeichen jeder Zeichenfolge enthält? So etwas wie enden 

newtest = ['8001', '8003', '8005']

Ich bin sehr neu in Python, aber ich habe es mit if-else-Anweisungen versucht: Anhängen, Indexieren [: -1] usw., aber nichts scheint zu funktionieren, wenn ich nicht alle meine anderen Nullen lösche. Ich danke dir sehr!

9
spartmar
test = ["80010","80030","80050"]
newtest = [x[:-1] for x in test]

Neuer Test enthält das Ergebnis ["8001","8003","8005"].

[x[:-1] for x in test] erstellt eine neue Liste (unter Verwendung von listien ), indem Sie jedes Element in test durchlaufen und eine geänderte Version in newtest setzen. Der x[:-1] bedeutet, dass alles im Zeichenfolgewert x bis zum letzten Element verwendet wird, jedoch nicht.

12
Matthew

Sie sind nicht so weit weg. Die Slice-Notation [: -1] ist der richtige Ansatz. Kombinieren Sie es einfach mit einem Listenverständnis:

>>> test = ['80010','80030','80050']
>>> [x[:-1] for x in test]
['8001', '8003', '8005']

somestring[:-1] gibt Ihnen alles vom Zeichen an Position 0 (einschließlich) bis zum letzten Zeichen (exklusiv).

6
timgeb

Um nur eine etwas andere Lösung als das Verständnis zu zeigen, da andere Antworten bereits das Schneiden erklärt haben, gehe ich einfach die Methode durch.

Mit der Kartenfunktion.

test = ['80010','80030','80050']
print map(lambda x: x[:-1],test)
# ['8001', '8003', '8005']

Weitere Informationen zu dieser Lösung finden Sie in der kurzen Erklärung, die ich in einer ähnlichen Frage gemacht habe.

Konvertiere eine Liste in eine Folge von String-Tripeln

1
Rockybilly

In Python ist @Matthew-Lösung perfekt. Aber wenn Sie überhaupt ein Anfänger im Codieren sind, muss ich dies empfehlen, sicher weniger elegant, aber der einzige Weg in vielen anderen Szenarien:

#variables declaration
test = ['80010','80030','80050'] 
lenght = len(test)                 # for reading and writing sakes, len(A): lenght of A
newtest = [None] * lenght          # newtest = [none, none, none], go look up empty array creation
strLen = 0                         # temporary storage

#adding in newtest every element of test but spliced
for i in range(0, lenght):         # for loop
    str = test[i]                  # get n th element of test
    strLen = len (str)             # for reading sake, the lenght of string that will be spliced
    newtest[i] = str[0:strLen - 1] # n th element of newtest is the spliced n th element from test

#show the results
print (newtest)                    # ['8001','8003','8005']

ps: Diese Skripte funktionieren zwar in Python, obwohl sie nicht die besten sind! Viel Glück für jeden Programmierer-Neuling.

0
NRagot