Sortierte Liste in Textdatei speichern (mit Zeilenumbruch)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Hag2bard
User
Beiträge: 3
Registriert: Mittwoch 25. November 2020, 22:27

Hallo ihr,

ich habe einen Code geschrieben, der mir eine unsortierte Liste von Zahlen in eine sortierte Liste speichert.
Leider bekomm ich es nicht hin, dass die Zahlen in die neue Textdatei untereinander geschrieben werden.

sortiert.txt:

Code: Alles auswählen

[150, 210, 1393, 1507, 2325, 2393, 2394, 2411, 2676, 5225, 6686, 7143, 7313, 7359, 7698, 7929, 8614, 8639, 9257, 9617]
Außerdem stören mich die Zeichen davor und dahinter [ ].

Hier mein Code:

Code: Alles auswählen

with open(r"Zufall2.txt") as lines:
    list1 = list(lines)
list1 = [int(x) for x in list1]
list1.sort()
print(list1)

datei = open("sortiert.txt",'w')
datei.write(str(list1))
datei.write("\r\n")
datei.close()
Nach einigem Rumprobieren komm ich nun nicht weiter.
P.S.: Wie sauber und vernünfig sieht der Code bis hier her aus?

Danke im Voraus
nezzcarth
User
Beiträge: 1638
Registriert: Samstag 16. April 2011, 12:47

Weshalb verwendest du einmal with und einmal nicht? Weshalb sind manche Namen auf Deutsch, andere jedoch englisch? Namen sollten nicht nach Datentypen vergeben werden ('list1'). Du schreibst die Stringrepräsentation der Liste in die Datei; daher sieht das so aus, wie es aussieht.

Hier mal ein Vorschlag:

Code: Alles auswählen

#!/usr/bin/env python3


def main():
    with open('Zufall.txt', 'r', encoding='utf8') as file:
        numbers = [int(line) for line in file]
    with open('sortiert.txt', 'w', encoding='utf8') as file:
        for number in sorted(numbers):
            print(number, file=file)


if __name__ == '__main__':
    main()
In Rückgriff auf deinen anderen Thread: In einer Bewerbungssituation bin ich nicht sicher, ob das Verwenden einer Bibliotheksfunktion ausreicht, selbst wenn das ist, was man in der Praxis tun würde.
Zuletzt geändert von nezzcarth am Samstag 28. November 2020, 12:30, insgesamt 1-mal geändert.
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

@Hag2bard: die zusätzlichen Listen sind unnötig, für das neue Problem musst du __blackjack__'s Lösung aus dem anderen Thread nur ein wenig erweitern:

Code: Alles auswählen

#!/usr/bin/env python3


def main():
    with open("random_numbers.txt") as lines:
        with open("sortiert.txt", 'w') as output:
            for line in sorted(lines, key=float):
                output.write(line)


if __name__ == "__main__":
    main()
Das with-Statement schließt die Dateien automatisch und sollte immer verwendet werden, statt sich um das Öffnen und schließen der Datei wie in deinem Beispiel selbst zu kümmern.
When we say computer, we mean the electronic computer.
Antworten