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?
Réponses
Trop de publicités?\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.....
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'
\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()