Entfernen Sie nachgestellte newline aus, die Elemente einer string-Liste
Ich eine große Liste von Wörtern in der form:
['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']
und dann mit dem Streifen-Funktion, die schalten Sie es in:
['this', 'is', 'a', 'list', 'of', 'words']
Dachte ich, dass das, was ich geschrieben hatte, funktionieren würde, aber ich bekomme immer die Fehlermeldung:
"'Liste' - Objekt hat kein Attribut 'Streifen'"
Hier ist der code, den ich versuchte:
strip_list = []
for lengths in range(1,20):
strip_list.append(0) #longest word in the text file is 20 characters long
for a in lines:
strip_list.append(lines[a].strip())
- Erklären Sie bitte, warum Sie Anhängen von 0 bis
strip_list
19 mal dann anfügen Ihre abisolierten Leitungen. Code hat einen sehr schlechten Geruch darüber. Auch, wenn Sie das Zeug aus einer Datei, Sie sollten sich entkleiden es auf die Art und Weise, in -- Gebäude einer großen Liste dann heftig es in anderen großen Liste ist keine gute Idee. Auch 2 der code darf nicht davon abhängen, zu wissen, die Länge der längste Wort/Zeile. Schritt zurück ein wenig -- was Ihr zu erreichen versucht? Was werden Sie tun, mitstrip_list
? - Im Zusammenhang Wie zu entfernen \n aus einer Liste element?
InformationsquelleAutor George Burrows | 2011-11-02
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
str.strip
funktioniert nur, wenn Sie sicher sind, dass in der Liste nicht enthalten unicode-Zeichenfolgen. Wenn es enthalten kann sowohl 8-bit-und unicode-strings verwendenlambda s: s.strip()
wie oben erwähnt, oder verwenden Sie diestrip
Funktion, die Sie importieren können, aus derstrings
Modul.list
, so dass eslist(map(str.strip, my_list))
. Auch, dass der check out: link.list comprehension?
[x.strip() for x in lst]
Können Sie Listen Verstehens:
Oder die
map
Funktion:0
Werte am Anfang der Liste zu. Obwohl ich kann mir nicht wirklich vorstellen, was es ist Sie versuchen zu erreichen, indem Sie Sie in der gleichen Ergebnis-Liste...strip_list = list(map(str.strip, lines))
als map() liefert eine map, iterator. docs.python.org/3/library/functions.html#mapDiese kann getan werden, mithilfe der Liste Verstehens im Sinne PEP 202
list
zumap
🙂Alle anderen Antworten, und vor allem über die Liste Verständnis, sind groß. Aber nur um zu erklären, Ihre Fehler:
a
ist ein Mitglied Ihrer Liste, nicht auf einem index. Was könnten Sie schreiben, ist dieses:Andere wichtige Bemerkung: Sie können erstellen Sie eine leere Liste so:
Aber das ist nicht so nützlich, wie
.append
hängt Sachen auf Ihrer Liste. In deinem Fall ist es nicht nützlich, um eine Liste mit den defaut-Werte, wie Sie bauen es Element pro Element beim anfügen von strings ausgezogen.Sodass Ihr code sollte wie:
Aber, das ist sicher, der beste ist der hier, denn genau das ist ja das gleiche:
In Fall müssen Sie etwas komplizierter als nur ein
.strip
, setzen Sie diese in eine Funktion, und das gleiche tun. Das ist die lesbaren Weg zur Arbeit mit Listen.Wenn Sie brauchen, um zu entfernen, einfach nachfolgende Leerzeichen, die Sie nutzen könnten
str.rstrip()
, der sollte etwas effizienter alsstr.strip()
: