Python: Drucken einer Liste, ohne die Klammern und einfachen Anführungszeichen?
Habe ich eine Liste voll von IP-Adressen. Ich möchte zum Durchlaufen der Liste und drucken Sie jede IP-Adresse. Wenn ich versuche, dies zu tun:
def printList(theList):
for item in theList:
print item
Und die Ausgabe sieht wie folgt aus:
['8.0.226.5']
['8.0.247.5']
['8.0.247.71']
['8.0.249.28']
['8.0.249.29']
Ich habe versucht, alles, einschließlich "drucken Artikel[0]" in der Schleife. Was mache ich falsch?
- Wirklich? Was passiert, wenn man versucht
print item[0]
? - IndexError: list index out of range
- Könnten Sie zeigen uns, wie diese Liste aussieht?
- Dieser Fehler kann nur auftreten, wenn eine Liste leer ist. Die Listen, die Sie gedruckt sind, alle nicht leeren.
- Dabei repr(Objekt) nicht die gleiche Sache. Delnan, die Liste ist nicht leer, aber anscheinend denkt der "Punkt" in der Schleife nicht eine Liste. (Obwohl es sicher ist, den Druck wie eine).
- Eine Liste, die Sie versuchen, nehmen Sie das Element mit index 0 muss leer sein. Ich sehe, dass das, was Sie gedruckt haben, ist nicht leer, sondern mit dem index 0 ist nur außerhalb der Reichweite, wenn es nicht ein (0+1) - te Element, d.h., wenn die Liste leer ist, also wenn Sie, dass Fehler-es muss eine leere Liste, Punkt. Zeigen Sie den code und exampel Daten (
print repr(theList)
sollte Ihnen eine genaue Darstellung der Liste), die den Fehler verursacht (z.B. auf pastebin.com). - Denken, Sie könnten einen Blick nehmen? pastebin.com/as1mt09s
InformationsquelleAutor Dan | 2011-04-21
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jedes Element in der Liste ist selbst ein singleton-Liste. Es gibt wahrscheinlich keinen Grund für diese - wenn Sie Sie nicht benennen können, besuchen Sie und entfernen Sie Sie (mit
re.find
überre.findall
oder wieder ein einzelnes Element aus der Liste zurückgegebenre.findall
), Sie sind einfach überflüssig und verursachen Schwierigkeiten, wie in diesem Fall.Unabhängig,
print item[0]
sollte funktionieren, da es den Druck des einzelnen Elements in der Liste, und im Gegensatz zu denstr()
von Listen, es wird nicht ausgeführt, das Element durchrepr
ersten (die bewirkt, dass die Anführungszeichen und würde die Flucht nicht druckbare Zeichen, wenn es eine in der Zeichenfolge). Und wenn Sie erst einmal entfernen der redundanten singleton-Listenprint '\n'.join(items)
funktioniert.Dein code wirft eine Fehlermeldung, falls es eine leere Liste in
theList
. Wenn es eine Zeile in derrecentFile
dass nicht alles enthalten, formatiert wie eine IP, wird eine leere Liste zurückgegeben werden, indemreturnIP
, und wenn jede Linie incomparisonFile
(übrigens: Sie öffnen es mit einem aussagekräftigen Namen am Anfang, aber öffnen Sie es wieder und wieder, ohne einen beschreibenden Namen inchechMatch
) enthält keine IP-Adresse, erhalten Sie noch eine leere Liste, die natürlich gleich die leere Liste als parameter übergebenip
. Also für nicht-IP-Namen inrecentFile
leere Listen Hinzugefügt werden. Dieser ganze troubel kann vermieden werden, wenn Sie die Rückgabe von strings anstatt von singleton-Listen ausreturnIP
verwendenNone
wenn es keine IP-Adresse in die aktuelle Zeile, und überspringen Sie die überprüfung/Anhängen incompareFiles
wennreturnIP
zurückNone
.Ich denke theList ist nicht eine Liste von IPs, sondern eine Liste von Listen von IP-Adressen(jeweils mit 1-element).
Eine weitere Ursache des Problems könnte sein, dass Sie haben eine IP-Klasse mit einem überschrieben str Methode, Drucke es so.