410 votes

Comment puis-je spécifier de nouvelles lignes dans une chaîne afin d'écrire plusieurs lignes dans un fichier?

Comment puis-je indiquer un saut de ligne dans une chaîne en Python, de sorte que je puisse écrire plusieurs lignes dans un fichier texte?

5voto

dolaameng Points 592

La plupart des caractères d'échappement dans les littéraux de chaîne de caractères de Java sont également valides en Python, comme "\r" et "\n".

5voto

Surya Points 4152

\n - insertion de caractère de nouvelle ligne simple fonctionne :

# Voici l'exemple de test - chaîne avec caractère de nouvelle ligne :
In [36]: test_line = "Salut !!!\n test de la première ligne.. \n test de la deuxième ligne.. \n et troisième ligne....."

Résultat :

In [37]: print(test_line)

Salut !!!
 test de la première ligne..
 test de la deuxième ligne..
 et troisième ligne.....

4voto

tripleee Points 28746

En Python 3, le langage se charge de coder les sauts de ligne pour vous dans la représentation native de la plate-forme. Cela signifie \r\n sur Windows, et juste \n sur les systèmes plus avancés.

Même sur les systèmes U*nix, la lecture d'un fichier avec des sauts de ligne Windows en mode texte renvoie des résultats corrects pour le texte, c'est-à-dire que tout caractère \r avant le caractère \n est supprimé silencieusement.

Si vous avez besoin d'un contrôle total sur les octets du fichier, vous pouvez utiliser le mode binaire. Alors chaque octet correspond exactement à un octet, et Python ne fait aucune traduction.

>>> # Écrire un fichier avec des sauts de ligne différents, en utilisant le mode binaire pour un contrôle total
>>> with open('/tmp/demo.txt', 'wb') as wf:
...     wf.write(b'DOS line\r\n')
...     wf.write(b'Ligne U*nix\n')
...     wf.write(b'aucune ligne')
10
9
7

>>> # Lire le fichier en tant que texte
>>> with open('/tmp/demo.txt', 'r') as text:
...     for line in text:
...         print(line, end='')
DOS line
Ligne U*nix
aucune ligne

>>> # Ou de manière plus démonstrative
>>> with open('/tmp/demo.txt', 'r') as text:
...     for line in text:
...         print(repr(line))
'DOS line\n'
'Ligne U*nix\n'
'aucune ligne'

>>> # Retour aux octets !
>>> with open('/tmp/demo.txt', 'rb') as binary:
...     for line in binary:
...         print(line)
b'DOS line\r\n'
b'Ligne U*nix\n'
b'aucune ligne'

>>> # Ouvrir en binaire, mais convertir en texte
>>> with open('/tmp/demo.txt', 'rb') as binary:
...     for line in binary:
...         print(line.decode('utf-8'), end='')
DOS line
Ligne U*nix
aucune ligne

>>> # Ou encore plus en détail, avec repr()
>>> with open('/tmp/demo.txt', 'rb') as binary:
...     for line in binary:
...         print(repr(line.decode('utf-8')))
'DOS line\r\n'
'Ligne U*nix\n'
'aucune ligne'

4voto

Lynne Points 169

Utilisez :

"{}\n{}\n{}".format(
    "ligne1",
    "ligne2",
    "ligne3"
)

Personnellement, je préfère ce format.

2voto

\n sépare les lignes d'une chaîne de caractères. Dans l'exemple suivant, je continue d'écrire les enregistrements dans une boucle. Chaque enregistrement est séparé par \n.

f = open("jsonFile.txt", "w")

for row_index in range(2, sheet.nrows):

  mydict1 = {
    "PowerMeterId" : row_index + 1,
    "Service": "Electricité",
    "Bâtiment": "JTC FoodHub",
    "Étage": str(Étage),
    "Emplacement": Emplacement,
    "TypeDeRapport": "Electricité",
    "Système": Système,
    "Sous-système": "",
    "Alimentation": "",
    "Catégorie": "",
    "NomAffiché": NomAffiché,
    "Description": Description,
    "Tag": Tag,
    "EstActif": 1,
    "TypeFournisseurDonnées": int(0),
    "TableDonnées": ""
  }
  mydict1.pop("_id", None)
  f.write(str(mydict1) + '\n')

f.close()

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