Seite 1 von 1

Textdatei lesen und in einer Liste speichern

Verfasst: Dienstag 22. August 2023, 12:30
von thomasro0109
Hallo Zusammen,
ich möchte gerne eine Textdatei einlesen und in einer Liste speichern.
Textdatei, angenommen Map.txt (mit Zeilenvorschub)
1111111111111111111111111111111111111111
1000000000000000000000000000000000000001
1000000000000000000000000000000000000001
1000000000000000000000000000000000000001
1000000000000000000000000000000000000001
1111111111111111111111111111111111111111

Das Ergebnis sollte so aussehen:
print(map) = (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0) usw.

Könnt ihr mir bitte weiterhelfen?

Dankeschön

Re: Textdatei lesen und in einer Liste speichern

Verfasst: Dienstag 22. August 2023, 12:47
von Sirius3
Das ist jetzt Deine Dritte Frage, ohne dass Du irgendeine Eigeninitiative zeigst.
Was hast Du denn schon versucht? Und was klappt konkret nicht?

Re: Textdatei lesen und in einer Liste speichern

Verfasst: Dienstag 22. August 2023, 12:55
von /me
thomasro0109 hat geschrieben: Dienstag 22. August 2023, 12:30 Könnt ihr mir bitte weiterhelfen?
Liste definieren. Datei öffnen. Datei zeilenweise lesen. Jede Zeile in Integer-Werte zerlegen und die Werte an die Liste anhängen.

Wichtig: Die Variable nicht `map` nennen, weil du damit das eingebaute map überschreibst.

Re: Textdatei lesen und in einer Liste speichern

Verfasst: Dienstag 22. August 2023, 12:57
von thomasro0109
Hallo Sirius3,
ja das stimmt.

Hier mal mein Ansatz:

Code: Alles auswählen

map =[]
with open('c:\Test\Map1.txt', "r") as f:
    map = f.read()
print(map)
Ergebnis:
[*]
1111111111111111111111111111111111111111
1000000000000000000000000000000000000001
1000000000000000000000000000000000000001
1000000000000000000000000000000000000001
1000000000000000000000000000000000000001
1111111111111111111111111111111111111111

Es wird halt immer der Zeilenvorschub mit übernommen.
Ich habe schon versucht zu googeln und zu lesen. Ich finde aber nichts.

Re: Textdatei lesen und in einer Liste speichern

Verfasst: Dienstag 22. August 2023, 13:01
von __deets__
Immer noch wichtig: variable nicht map nennen, das ist eine eingebaute Funktion, die du damit überschreibst.

Zum entfernen von Leerraum gibt es die verschiedenen strip Varianten. Einfach mal in die Dokumentatzdes string-Datentypen schauen.

Re: Textdatei lesen und in einer Liste speichern

Verfasst: Dienstag 22. August 2023, 13:09
von Sirius3
Wenn Du den Zeilenvorschub nicht haben möchtest, dann kannst Du ihn durch nichts ersetzen:

Code: Alles auswählen

map_data = map_data.replace("\n", "")

Re: Textdatei lesen und in einer Liste speichern

Verfasst: Dienstag 22. August 2023, 13:48
von thomasro0109
Hallo Sirius3,
ich habe jetzt mal ein bissel rumprobiert. :-)

Code: Alles auswählen

map_data =[]
with open('c:\Test\Map1.txt', "r") as f:
    data = f.read()	
print(data)
data = data.replace("\n","")
for i, n in enumerate(data):
	map_data.append(data[i])
print(map_data)	
Jetzt habe ich das Ergebnis.
['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1']

Vielen Dank für die Unterstützung.

Thomas

Re: Textdatei lesen und in einer Liste speichern

Verfasst: Dienstag 22. August 2023, 13:57
von /me
thomasro0109 hat geschrieben: Dienstag 22. August 2023, 13:48

Code: Alles auswählen

for i, n in enumerate(data):
	map_data.append(data[i])
Das ist aber ein übler Umweg mit enumerate.

Code: Alles auswählen

for n in data:
	map_data.append(n)
Und wenn du Integer-Werte haben möchtest, wie in deiner Frage gezeigt, dann solltest du auch Integer-Werte zur Liste hinzufügen.

Code: Alles auswählen

for n in data:
	map_data.append(int(n))

Re: Textdatei lesen und in einer Liste speichern

Verfasst: Dienstag 22. August 2023, 14:06
von Sirius3
Und das ganze geht dann per Listcomprehension eleganter:

Code: Alles auswählen

with open("c:/test/map1.txt", encoding="ASCII") as file:
    data = [int(c) for c in file.read() if c in ["0", "1"]]