Seite 1 von 2

Re: Textdatei in einer Liste speichern.

Verfasst: Dienstag 19. Oktober 2021, 15:44
von PeterL
Hallo Leute,

ich habe ein Problem mit einer Liste.
Ich öffne eine pgn Textdatei und lese Zeilenweise die Inhalte ein.
Ich möchte aber nur bestimmte Einträge in einer Liste Speichern und diese Dann abspeichern.

Ich habe schon alles mögliche versucht. Es wird mir immer nur der Letzte Eintrag ausgegeben, aber nicht die gesamte Liste
Wo liegt der Fehler ?

with open('pgn/game-8.pgn', 'r') as pgn_file:
daten=[]#liste erstellen
for line in pgn_file:

if line.find ('[Event "') == 0 and line.count('[Event "')==1 and line.find('"]') > 0 and line.count ('"]') ==1:

daten = [line.strip()] #in Liste ablegen

elif line.find ('[Site "') == 0 and line.count('[Site "')==1 and line.find('"]') > 0 and line.count ('"]') ==1:
daten = [line.strip()]# in Liste ablegen

for zahl in daten:
print(zahl)

Hier wird mit nur der Letzte Eintrag ausgegeben
[Site "St Petersburg RUS"]

So sollte es aussehen
[Event "8th RUS-CHN Summit Women Classical"]
[Site "St Petersburg RUS"]

Bis die Tage...

Re: Schach PGN Datei splitten aufteilen

Verfasst: Dienstag 19. Oktober 2021, 16:01
von __blackjack__
@PeterL: ``daten = [line.strip()]# in Liste ablegen`` bindet `daten` an eine Liste mit genau einem Element. Was immer *vorher* an den Namen `daten` gebunden war, ist damit natürlich nicht mehr an den Namen gebunden. Du willst an der Stelle nicht immer neue Listen mit jeweils einem Element erstellen, sondern das Element an eine bereits vorhandene, vor der Schleife erstellte, leere Liste *anhängen*. Diese leere Liste erstellst Du ja sogar schon.

Re: Schach PGN Datei splitten aufteilen

Verfasst: Dienstag 19. Oktober 2021, 16:18
von PeterL
Du willst an der Stelle nicht immer neue Listen mit jeweils einem Element erstellen, sondern das Element an eine bereits vorhandene, vor der Schleife erstellte, leere Liste *anhängen*. Diese leere Liste erstellst Du ja sogar schon.
---

Hallo ,ich verstehe nicht was du meinst.
Es wird immer nur ein Listeneintrag ausgegeben, ich möchte gerne alles ausgeben,
die gesamte Liste.

Wie wird das programmiert ?

Bis die Tage

Re: Schach PGN Datei splitten aufteilen

Verfasst: Dienstag 19. Oktober 2021, 16:23
von ThomasL
Hi PeterL,

diese Zeilen mit

Code: Alles auswählen

daten = [line.strip()] #in Liste ablegen
machen nicht das was du denkst.

Du erstellst da eine neue Liste mit einem Element.
Du möchtest dieses Element an die existierende Liste anhängen. Google doch mal was "anhängen" auf Englisch heißt und dann "Python anhängen an eine Liste".

Re: Schach PGN Datei splitten aufteilen

Verfasst: Dienstag 19. Oktober 2021, 16:53
von PeterL
Hallo, also jetzt scheint es zu laufen. Leider wird mir die Liste mit Zeilenumbruch ausgegeben.

daten.append(line)

Ergebniss:
[Event "8th RUS-CHN Summit Women Classical"]

[Site "St Petersburg RUS"]

[Date "2012.07.02"]

und
so möchte ich es ausgegeben haben

[Event "8th RUS-CHN Summit Women Classical"]
[Site "St Petersburg RUS"]
[Date "2012.07.02"]

daten.append = [line.strip()] gibt immer eine Fehlermeldung aus.
daten.append[line.strip()]
daten.append [line.strip()]

Bis die Tage

Re: Schach PGN Datei splitten aufteilen

Verfasst: Dienstag 19. Oktober 2021, 17:37
von __blackjack__
@PeterL: Es gibt in der Python-Dokumentation ein Grundlagentutorial. Man kann nicht einfach Syntax raten und hoffen der Rechner macht was man eigentlich will. Der macht immer nur genau das was man sagt, und wenn man das syntaktisch falsch macht, oder wenn man von Objekten Operationen verlangt, die sie nicht kennen/können, dann gibt es entsprechende Fehlermeldungen.

Re: Schach PGN Datei splitten aufteilen

Verfasst: Dienstag 19. Oktober 2021, 17:45
von PeterL
Hallo, es schein zu laufen.

Code: Alles auswählen

 for zahl in daten:     
    print(zahl , end="")  
Jetzt erhalte ich nun das gewünschte Ergebnis.
Das Schlüsselwort end="" entfernt die Zeilenumbrüche.

[Event "8th RUS-CHN Summit Women Classical"]
[Site "St Petersburg RUS"]
[Date "2012.07.02"]

Re: Schach PGN Datei splitten aufteilen

Verfasst: Dienstag 19. Oktober 2021, 17:48
von __blackjack__
@PeterL: `zahl` ist irgendwie nicht wirklich passend als Name.