Ich habe einen Wallop einer Schnur mit vielen Linien. Wie lese ich die Zeilen einzeln mit einer for
Klausel? Folgendes versuche ich zu tun, und es wird eine Fehlermeldung für die in der for line in textData
Zeile angegebene textData-Variable angezeigt .
for line in textData
print line
lineResult = libLAPFF.parseLine(line)
Die textData-Variable existiert zwar, ich drucke sie aus, bevor ich nach unten gehe, aber ich denke, dass der Pre-Compiler den Fehler auslöst.
TIA
Dennis
textData
? Können Sie uns eine SSCCE geben , etwas, das wir ausführen und das gleiche Problem wie Sie sehen können, damit wir es Ihnen erklären können?Antworten:
Was ist mit
.splitlines()
?for line in textData.splitlines(): print(line) lineResult = libLAPFF.parseLine(line)
quelle
"/r"
und"/n"
sind nur normale zweistellige Zeichenfolgen, die aus einem Schrägstrich und einem Buchstaben bestehen. Meinten Sie"\n"
?durch Aufteilen mit Zeilenumbrüchen.
for line in wallop_of_a_string_with_many_lines.split('\n'): #do_something..
Wenn Sie über eine Zeichenfolge iterieren, iterieren Sie char für char in dieser Zeichenfolge, nicht zeilenweise.
>>>string = 'abc' >>>for line in string: print line a b c
quelle
Diese Antwort schlägt in einigen Randfällen fehl (siehe Kommentare). Die oben akzeptierte Lösung wird diese behandeln.
str.splitlines()
ist der Weg zu gehen. Ich werde diese Antwort dennoch als Referenz belassen.Alte (falsche) Antwort:
s = \ """line1 line2 line3 """ lines = s.split('\n') print(lines) for line in lines: print(line)
quelle
import re
re.split
anstelle vonstr.split
(odersplitlines
) nur Zeilenumbrüche aufteilen? Das Erstellen eines regulären Ausdrucks aus einem einzelnen statischen, wörtlichen Zeichen macht die Dinge ohne Grund nur komplizierter.s.split
. Jetztsplit('\n')
behält alle\r
Zeichen innerhalb des Stichs. Wagenrückläufe werden nicht gelöscht, was ein Problem sein könnte.