2017-11-21 1 views
1

Ich habe versucht, ein kleines Skript zu erstellen, das verschlüsselten Text aus einer Vorlage nimmt und einen Speicherort findet. Ich habe es sogar geschafft, es durch Versuch und Irrtum funktionieren zu lassen. Problem ist ..... Ich weiß nicht, wie es funktioniert. Vielleicht kann jemand es für mich klären? Hier ist der Code:Liste mit Ganzzahlen anhängen

word_list = """something 
Location: City 
other_something""" 
word_list = word_list.split() 
indexes = [(index + 1) for index in range(len(word_list)) if word_list[index] == "Location:"] 
location = [] 
location2 = [] 
for index in indexes: 
    location2 = location.append(word_list[index]) 
print location 

Nach diesem Namen der Stadt zu realisieren, kommt immer nach dem Begriff „Ort:“ Ich wollte Python das nächste Wort finden und zu drucken. Es funktioniert sogar! Jetzt ist der Teil, den ich nicht verstehe, warum der Standort2 leer bleibt. Nach meinem Verständnis sollte es gleich Ort sein. Oder nicht ? Warum bleibt die Antwort beim Standort? Bitte beachten Sie, dass ich ein kompletter Anfänger bin, also eine Antwort, die nicht sehr einfach sein wird, könnte über mein Verständnis hinausgehen.

+1

'some_list.append (some_value)' arbeitet in-place und gibt 'None' zurück. Ich bin mir nicht sicher, was Sie erwartet haben, aber dann wird 'location2' einfach wiederholt auf 'None' in der Schleife gesetzt. –

+1

Können Sie vielleicht eine erwartete Ausgabe anzeigen? Es ist unklar, was Sie von diesem Code zurückgeben möchten. – RoadRunner

+1

Es sollte einfach "City" zurückgeben. Was würdest du anstelle von .append verwenden? –

Antwort

1
I hope this makes sense, this code is a bit wacky. 

# This line of code assigns a value to the variable word_list 
word_list = """something 
Location: City 
other_something""" 
# This line makes a list from the words, with each item in the list being one word 
word_list = word_list.split() 
# This line loops the variable index over the range of the word_list, and if the index's value is "Location:" it stores 
# index+1 into a list called indexes 
indexes = [(index + 1) for index in range(len(word_list)) if word_list[index] == "Location:"] 
# This makes an empty list called location 
location = [] 
# This makes an empty list called location2 
location2 = [] 
# This loops over the indexes in indexes 
for index in indexes: 
    # This line of code never stores anything to location2, because location.append appends to the list called 
    # 'location', and since location.append does not return a value to store, location2 remains empty 
    location2 = location.append(word_list[index]) 
# This line prints the list called location. 
print location 
1

Sie die Vorteile einer .index() Liste Attribut nehmen,

word_list = """something 
Location: City 
other_something""".split() 

print word_list[word_list.index('Location:')+1] 

dies wird einfach 'City' in dieser Situation drucken. index() gibt den Index des durch das erste Argument angegebenen Elements zurück. Durch Hinzufügen von 1 zum Index 'Location' können Sie auf das nächste Element der word_list zugreifen, das immer die Position ist, wenn sich das Format der word_string nicht ändert.

+0

Ja, das hilft wirklich. Danke für die Antwort und die Korrektur meines Newbie-Codes :) –