131 votes

Comment lire une longue chaîne de caractères ligne par ligne en python ?

J'ai un coup de corde avec de nombreuses lignes. Comment puis-je lire les lignes une par une avec un for clause ? Voici ce que j'essaie de faire et j'obtiens une erreur sur la var textData référencée dans la clause for line in textData ligne.

for line in textData
    print line
    lineResult = libLAPFF.parseLine(line)

La variable textData existe bien, je l'imprime avant de descendre, mais je pense que le pré-compilateur est à l'origine de l'erreur.

234voto

Benjamin Gruenbaum Points 51406

Et si on utilisait .splitlines() ?

for line in textData.splitlines():
    print(line)
    lineResult = libLAPFF.parseLine(line)

6voto

thkang Points 3692

En les séparant par des nouvelles lignes.

for line in wallop_of_a_string_with_many_lines.split('\n'):
  #do_something..

si vous itérez sur une chaîne de caractères, vous itérez caractère par caractère dans cette chaîne, et non par ligne.

>>>string = 'abc'
>>>for line in string:
    print line

a
b
c

4voto

P.R. Points 342

Cette réponse échoue dans quelques cas limites (voir les commentaires). La solution acceptée ci-dessus les traitera. str.splitlines() est la voie à suivre. Je laisserai néanmoins cette réponse comme référence.

Ancienne réponse (incorrecte) :

s =  \
"""line1
line2
line3
"""

lines = s.split('\n')
print(lines)
for line in lines:
    print(line)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X