Hallo liebe Comunity,
ich habe eine gute Frage. Wie kann man eine Liste in eine Text-Datei ohne rechteckige Klammern abspeichern?
Vielleicht bin ich doof, aber ich fange gerade an.
Der Code sieht so aus:
datei = open("1.txt", "r+")
L = [1, 2, 3, 4, 5]
L = str(L)
datei.write(L)
datei.close()
Ich möchte, dass es in der Text-Datei so abgespeichert wird: 1, 2, 3, 4, 5.
Aber, ich bekomme immer so:
[1, 2, 3, 4, 5]
Ich bin schon am Verzweifeln...
Liste in eine txt-Datei speichern
@reddy: Vergiss die Zeichenkettendarstellung von Listen und erstelle die Zeichenkette selbst. Es gibt da so eine praktische `join()`-Methode auf Zeichenketten. Eine Zahl kann man mit der `str()`-Funktion in eine Zeichenkette umwandeln. Dann brauchst Du nur noch eine Schleife um eine neue Liste mit Zeichenketten aus den Zahlen erstellen, oder eine „list comprehension“, oder einen Generatorausdruck, oder die `map()`-Funktion.
Wenn Du etwas in eine Datei schreiben möchtest, dann solltes Du die zum Schreiben öffnen. Nicht zum lesen und schreiben. 'r+' braucht man nur ganz selten, für Binärdaten, und wenn man genau weiss was man da tut.
Wenn Du etwas in eine Datei schreiben möchtest, dann solltes Du die zum Schreiben öffnen. Nicht zum lesen und schreiben. 'r+' braucht man nur ganz selten, für Binärdaten, und wenn man genau weiss was man da tut.
Code: Alles auswählen
#!/usr/bin/env python
# coding: utf8
from __future__ import absolute_import, division, print_function
def main():
data = [1, 2, 3, 4, 5]
with open('test.txt', 'w') as out_file:
out_file.write('{0}\n'.format(', '.join(str(n) for n in data)))
if __name__ == '__main__':
main()
@reddy: hier muß man nichts brutal machen, sondern es ist der Normalfall, dass man die Ausgabe so formatieren muß, wie man sie gerne hätte. Wenn Du eigentlich eine Datei im csv-Format schreiben willst, böte es sich an, das csv-Modul dafür zu verwenden.
Hallo Sirius3,Sirius3 hat geschrieben:@reddy: hier muß man nichts brutal machen, sondern es ist der Normalfall, dass man die Ausgabe so formatieren muß, wie man sie gerne hätte. Wenn Du eigentlich eine Datei im csv-Format schreiben willst, böte es sich an, das csv-Modul dafür zu verwenden.
ja, csv scheint dafür besser geignet zu sein.
Wie kann man z.B. eine Liste in der Form [['Schulz', 'Steffi', 165], ['Bolz', 'Carina', 172]] in eine csv-Datei abspeichern?
@reddy: Erster Schritt: Dokumentation des csv-Moduls lesen und verstehen. Zweiter Schritt: Wissen in Code umsetzen.
Ok, ich nehme die Frage zurück. Ich habe schon die Lösung rausgegoogelt.BlackJack hat geschrieben:@reddy: Erster Schritt: Dokumentation des csv-Moduls lesen und verstehen. Zweiter Schritt: Wissen in Code umsetzen.
Nur noch eine Frage!
Ich habe jetzt CSV-Datei, die ich mit Excel öffnen kann.
Man kann natürlich jetzt die Daten im Excel sortieren.
Ich würde es aber bevorzugen, die Daten mit Python zu sortieren.
Nach welchen Befehlen soll ich im Internet googeln?
Ich finde es auf Anhieb nicht.
Ich würde mich einfach an die offizielle Dokumentation halten. Im Tutorial ziemlich weit vorne wird bereits die sort-Methode für Listen erwähnt. Das Verständnis des key-Parameters ist für eine flexible Sortierung wichtig. Experimentiere mal damit und wenn du da nicht weiterkommst, dann beschreibe hier deinen Ansatz und dein konkretes Problem damit. Wir können dich dann bestimmt in die richtige Richtung schubsen.reddy hat geschrieben:Ich würde es aber bevorzugen, die Daten mit Python zu sortieren.
Nach welchen Befehlen soll ich im Internet googeln?
@reddy: Hier noch eine Lösung:
Mit map(str, L) werden alle Integerzahlen in der Liste in einen String gewandelt
und dann mit ', '.join zusammengefügt, wobei Komma gefolgt von Leerzeichen
als Trennung benutzt wird.
Code: Alles auswählen
L = [1, 2, 3, 4, 5]
datei = open('eins.txt',' w')
datei.write(', '.join((map(str, L))))
datei.close()
und dann mit ', '.join zusammengefügt, wobei Komma gefolgt von Leerzeichen
als Trennung benutzt wird.
Die Hilfe ist echt super hier. Danke schön an alle!
Ich versuche Python als Hobby zu lernen. Mit jeder Antwort kommen immer mehr Fragen.
Z.B. ich habe folgende drei Python-Scripte: 1.py, 2.py und 3.py.
Ich muss sie nacheinander ausführen. Zur Zeit verwende ich eine Batch-Datei zum Starten.
Geht es auch mit einem Python-Script? Das Programm muss folgendes machen.
1) Starte 1.py, warte bis es beendet wird, sonst Fehlermeldung.
2) Starte 2.py, warte bis es beendet wird, sonst Fehlermeldung.
3) Starte 3.py, warte bis es beendet wird, sonst Fehlermeldung.
Kann man es mit ein paar Zeilen Code realisieren?
Ich versuche Python als Hobby zu lernen. Mit jeder Antwort kommen immer mehr Fragen.
Z.B. ich habe folgende drei Python-Scripte: 1.py, 2.py und 3.py.
Ich muss sie nacheinander ausführen. Zur Zeit verwende ich eine Batch-Datei zum Starten.
Geht es auch mit einem Python-Script? Das Programm muss folgendes machen.
1) Starte 1.py, warte bis es beendet wird, sonst Fehlermeldung.
2) Starte 2.py, warte bis es beendet wird, sonst Fehlermeldung.
3) Starte 3.py, warte bis es beendet wird, sonst Fehlermeldung.
Kann man es mit ein paar Zeilen Code realisieren?