Ich muss eine große Liste von Wörtern in der Form nehmen:
['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']
und dann mit der Strip-Funktion verwandeln Sie es in:
['this', 'is', 'a', 'list', 'of', 'words']
Ich dachte, dass das, was ich geschrieben hatte, funktionieren würde, aber ich bekomme immer wieder die Fehlermeldung:
"'list' Objekt hat kein Attribut 'strip'"
Hier ist der Code, den ich ausprobiert habe:
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())
strip_list
19 Mal anhängen und dann Ihre abisolierten Zeilen anhängen. Dieser Code hat einen sehr schlechten Geruch. Auch wenn Sie dieses Zeug aus einer Datei haben, sollten Sie es auf dem Weg zum Entfernen entfernen - eine große Liste erstellen und dann in eine andere große Liste einbinden ist keine gute Idee. Außerdem sollte Ihr Code nicht davon abhängen, die Länge des längsten Wortes / der längsten Zeile zu kennen. Treten Sie ein bisschen zurück - was versuchen Sie zu erreichen? Was wirst du damit machenstrip_list
?Antworten:
quelle
str.strip
funktioniert dies jedoch nur, wenn Sie sicher sind, dass die Liste keine Unicode-Zeichenfolgen enthält. Wenn es sowohl 8-Bit- als auch Unicode-Zeichenfolgen enthalten kann, verwenden Sie dieselambda s: s.strip()
wie oben erwähnt oder verwenden Sie diestrip
Funktion, die Sie aus demstrings
Modul importieren können .list
tunlist(map(str.strip, my_list))
. Überprüfen Sie auch das: Link .Listenverständnis?
[x.strip() for x in lst]
quelle
Sie können Listenverständnisse verwenden :
Oder die
map
Funktion:quelle
0
Werten am Anfang der Liste alles tun, was es ist . Obwohl ich mir nicht wirklich vorstellen kann, was Sie erreichen wollen, indem Sie sie in dieselbe Ergebnisliste aufnehmen ...strip_list = list(map(str.strip, lines))
da map () einen Karteniterator zurückgibt. docs.python.org/3/library/functions.html#mapDies kann unter Verwendung von Listenverständnissen erfolgen, wie in PEP 202 definiert
quelle
list
inmap
:) zu ändernAlle anderen Antworten und hauptsächlich das Listenverständnis sind großartig. Aber nur um Ihren Fehler zu erklären:
a
ist ein Mitglied Ihrer Liste, kein Index. Was Sie schreiben könnten, ist Folgendes:Ein weiterer wichtiger Kommentar: Sie können auf diese Weise eine leere Liste erstellen:
Dies ist jedoch nicht so nützlich, da
.append
Dinge an Ihre Liste angehängt werden . In Ihrem Fall ist es nicht sinnvoll, eine Liste mit Standardwerten zu erstellen, da Sie diese beim Anhängen von entfernten Zeichenfolgen Element für Element erstellen.Ihr Code sollte also wie folgt aussehen:
Aber das Beste ist sicherlich dieses, da dies genau dasselbe ist:
Wenn Sie etwas Komplizierteres als nur ein haben
.strip
, fügen Sie dies in eine Funktion ein und machen Sie dasselbe. Das ist die am besten lesbare Art, mit Listen zu arbeiten.quelle
Wenn Sie nur nachgestellte Leerzeichen entfernen müssen , können Sie Folgendes verwenden: Dies
str.rstrip()
sollte etwas effizienter sein alsstr.strip()
:quelle
Ausgabe:
quelle