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...
            
			
									
						
										
						Schach PGN Datei splitten aufteilen
- __blackjack__
- User
- Beiträge: 14209
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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.
            
			
									
						
							“Every thinking person fears nuclear war and every technological nation plans for it. Everyone knows
it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?
			
						it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?
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
            
			
									
						
										
						---
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
Hi PeterL,
diese Zeilen mit 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".
            
			
									
						
							diese Zeilen mit
Code: Alles auswählen
daten = [line.strip()] #in Liste ablegenDu 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".
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
			
						Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
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
            
			
									
						
										
						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
- __blackjack__
- User
- Beiträge: 14209
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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.
            
			
									
						
							“Every thinking person fears nuclear war and every technological nation plans for it. Everyone knows
it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?
			
						it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?
Hallo, es schein zu laufen.
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"]
            
			
									
						
										
						Code: Alles auswählen
 for zahl in daten:     
    print(zahl , end="")  Das Schlüsselwort end="" entfernt die Zeilenumbrüche.
[Event "8th RUS-CHN Summit Women Classical"]
[Site "St Petersburg RUS"]
[Date "2012.07.02"]
- __blackjack__
- User
- Beiträge: 14209
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@PeterL: `zahl` ist irgendwie nicht wirklich passend als Name.
            
			
									
						
							“Every thinking person fears nuclear war and every technological nation plans for it. Everyone knows
it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?
			
						it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?


