Dicts. File.

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.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Ich kenne mich mit regulären Ausdrücken nicht aus. Aber mit Dictionaries sollte es auch gehen:

Code: Alles auswählen

diff[key] = dic1[key] - dic2[key]
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

BlackJack hat geschrieben:@Sr4l: Jetzt bin ich verwirrt. Was meinst Du damit das Du lieber ``for``-Schleifen schreibst!? Das ändert sich doch erst einmal gar nicht wenn man das an dieser Stelle sinnlose `readlines()` einfach weglässt. Also ``for line in f:`` statt ``for line in f.readlines():``.
Wusste nicht das das geht dachte, das könnte man nur über ne while Schleife lösen. Danke.
shuang hat geschrieben:Sagen wir mal ich habe eine Textdatei mit folgendem Inhalt:


Name: Peter 19
Hans 39
Sarah 10
Lars 18

und ich habe noch eine weitere Textdatei:
Personen:
Peter 4
Hans 3
Sarah 2
Lars 3


Nun möchte ich das die Werte aus der 2ten Textdatei im ersteren subrahiert werden.
Sinn und Zweck? Was soll passieren wenn ein Name in Name aber in Personen vorkommt? Ist "Personen:" bzw. "Name:" immer die erste Zeile der Datei?

Ich dachte dein Beispiel damals mit dem Problem: "Name: Peter 19" das in einer Zeile zufällig vor dem Name noch ein "Name: " steht.
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

Genau ich habe 2Dateien mit den zuvor gezeigten Inhalten.
Ich möchte wenn z.b Peter im ersten und Peter im zweiten vorkommt den Wert aus der zweiten Datei abziehen. und die erste Datei dann mit den neuen Werten aktualisieren.
Beispiel

Text 1:
-----------------
Name: Peter
Figur: Bettler 4
Name: Guenther
Figur: Truil 10

Text2:
-------------------

Bettler 2
Truil 3

------------------

Ergebnis
Name: Peter
Figur: Bettler 2

Name: Guenther
Figur: Truil 7
BlackJack

@shuang: Du sagst Du hast Dateien mit den zuvor gezeigten Inhalten aber Dein aktuelles Beispiel sieht jetzt schon wieder etwas anders aus!? Ein wichtiger Teil beim Programmieren ist es sich über das Problem möglichst im klaren zu sein. Ist *das* jetzt die ganze Wahrheit oder sehen die Datenformate am Ende doch wieder anders aus?
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

Nein genauso wie oben beschrieben :)
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

Text 1:
-----------------
Name: Peter
Figur: Bettler 4
Name: Guenther
Figur: Truil 10

Text2:
-------------------

Bettler 2
Truil 3

------------------

Ergebnis
Name: Peter
Figur: Bettler 2

Name: Guenther
Figur: Truil 7
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Dann sollte es nicht schwer sein, die Daten mit den Tipps von Sr4l als Dictionaries einzulesen und zu verarbeiten.

Viel Erfolg
Gerrit
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Darf man noch mal nachfragen, wieso diese Dateiformate so aussehen?

Also konkreter:
Kannst Du diese Formate beeinflussen? Wenn ja, ändere sie am besten in etwas leichter "parsebares" (JSON, usw.)
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

Nein die müssen genau so sein :)
darf nicht verändert werden
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Klingt jetzt irgendwie nach Hausaufgaben. Informatikuntericht in der Schule?
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

wie kommst du auf Hausaufgabe. ??
Wo sieht das nach Hausaufgabe aus? Machen die so komplexe Dinge in der Schule? Glaub ich nicht. Also ich hänge seit 4Wochen an der Problematik.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Bei einem vernünftigen Format braucht man nicht 4 Wochen, sondern weniger als 4 Minuten ;)

Es klingt nach Hausuafgaben, da du du sagst, das Format sei vorgegeben. Warum / von wem ist es denn vorgegeben?
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

Von meinem Kumpel ist es vorgegeben, weil wir ein Spiel spielen und das Spiel programmieren wollen. Er wollte das so, also mach ich es so ;)
Wieso eigl, ist die Problematik so sehr komplex?

Wie kann man die Aufgabe in 4Min lösen ?? :)
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

shuang hat geschrieben:Wie kann man die Aufgabe in 4Min lösen ?? :)
Ich dachte *du* willst das programmieren! Wie man das macht steht auch schon in diesem Thread. Du musst es nur umsetzen. Vielleicht solltest du dich aber auch mal mit deinem Kumpel zusammensetzen und über eine bessere Format nachdenken.

Wie soll die Daten eigentlich in Python dargestellt werden?
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

Name: Peter
Figur: Bettler 2

Name: Guenther
Figur: Truil 7
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Code: Alles auswählen

In [8]: with open('bla.txt', 'r') as fobj:
    content = fobj.read()
   ...:     
   ...:     

In [10]: print content
Name: Peter
Figur: Bettler 4
Name: Guenther
Figur: Truil 10
Ist die eine Leerzeile wichtig?
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

Da muss ein Fehler sein

In [8]: ??? das kann ich in Python nicht eingeben.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Das ist ja auch die Eingabeaufforderung von IPython. Das brauchst du nicht eintippen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
shuang
User
Beiträge: 45
Registriert: Montag 5. April 2010, 14:30

Schau mal ganz einfach. ich habe die Problemtaik nun mehrmals geschildert.
Es soll die Werte subtrahieren oder addieren je nachdem wie es in der 2ten Textdatei steht.
Ich möchte die Datei ja nicht nur einlesen sondern bearbeiten. :?
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

In der ersten Antwort steckt alles, was du suchst. Mehr muss nicht gesagt werden. (Wenn du dich wiederholst, können wir das schon lange)
Antworten