Seite 1 von 1

Text Datei einlesen, liste erstellen, in if verwenden

Verfasst: Montag 16. Februar 2015, 11:13
von slimcode
Hallo

bin ja immer noch bei meinem Spiel und habe nun folgendes Problem

ich schreibe die Fragen händisch in eine Textdatei, die sehen dann so aus

Frage1: Wer gehört neben Dieter Bohlen zu „Modern Talking“?
(A) : Thomas Anders
(B) : Robbie Williams
(C) : Mark Medlock
(D) : Daniel Küblböck
A

Wenn ich nun in der letzten Zeile KEIN Enter drücke, liest die folgende if abfrage den Buchstaben A richtig aus

Code: Alles auswählen


    def antwort_pruefen(fragennummer):
        dateiname = fragennummer
        with open(dateiname, 'r') as f:
            inhalt = [(line) for line in f]
        antwort_user = input("Ihre Antwort: ")
        if antwort_user == inhalt[5]:
            print ("\n")
            print ("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++") 
            print ("Super, die richtige Antwort war ", inhalt[5])
            print ("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n") 

    
        else:
            print ("\n")
            print ("-----------------------------------------------------------------") 
            print ("Schade, die richtige Antwort war ", inhalt[5])
            print ("-----------------------------------------------------------------\n") 
mit print (inhalt) kommt diese Ausgabe
['Frage2: Wer gehört neben Dieter Bohlen zu „Modern Talking“?\n', '(A) : Thomas Anders\n', '(B) : Robbie Williams\n', '(C) : Mark Medlock\n', '(D) : Daniel Küblböck\n', 'A']

mache ich aber ein Enter nach dem A, sagt er mit das A != A ist
wenn ich mir dann die Liste ausgeben lasse, sieht die so aus
['Frage1: Wer gehört neben Dieter Bohlen zu „Modern Talking“?\n', '(A) : Thomas Anders\n', '(B) : Robbie Williams\n', '(C) : Mark Medlock\n', '(D) : Daniel Küblböck\n', 'A\n']

heißt die A hat noch ein \n hinten dran hängen

hab bei with open(dateiname, 'r') as f: schon rU und sämtliche codecs ausprobiert, geht leider nichts

hier die Fragen:
1: kann ich das verhindern, dass ein \n ausgelesen wird
2: kann ich bei if antwort_user == inhalt[5]: angeben, dass nur das ERSTE Zeichen von Zeile[5] gemeint ist

Danke für die Hilfe

Re: Text Datei einlesen, liste erstellen, in if verwenden

Verfasst: Montag 16. Februar 2015, 11:17
von BlackJack
@slimcode: Das lesen von Zeilenendezeichen kannst Du nicht verhindern und wie man an einen einzelnen Buchstaben an einem bestimmten Index in einer Zeichenkette heran kommt, sollte in einem Grundlagentutorial oder aus der Python-Dokumentation klar werden. Wie kommst Du Denn an ein bestimmtes Element in einer Liste heran?

Re: Text Datei einlesen, liste erstellen, in if verwenden

Verfasst: Montag 16. Februar 2015, 11:23
von Hyperion
Ich hatte Dich ja bereits auf JSON hingewiesen... evtl. wäre jetzt ja die Zeit, sich darauf zu besinnen ;-)

Damit hast Du dann weder Probleme mit Whitespaces, noch mit dem Parsen von Elementen (da dies das ``json`` Modul für Dich übernimmt).

Für das spezielle Problem mit den "\n" suchst Du übrigens ``str.strip()``! Das müsstest Du in Zeile 5 mit einbauen.

Re: Text Datei einlesen, liste erstellen, in if verwenden

Verfasst: Montag 16. Februar 2015, 11:38
von slimcode
danke hyperion

Code: Alles auswählen

     inhalt = [(line.strip()) for line in f]
Zeile 5 editiert und es funktioniert

ja json hab ich schon noch im hinterkopf
aber fürs händische erstellen der Fragen ist TXT doch einfacher

danke

Re: Text Datei einlesen, liste erstellen, in if verwenden

Verfasst: Montag 16. Februar 2015, 11:52
von Hyperion
slimcode hat geschrieben: ja json hab ich schon noch im hinterkopf
aber fürs händische erstellen der Fragen ist TXT doch einfacher
Findest Du das wirklich so umständlich?

Und wie ich schon anmerkte kannst Du Dir ja später einen grafischen Editor für das Verwalten der Fragen bauen, so dass Du gar kein JSON per Hand in eine Datei schreiben musst!

Ich persönlich würde immer ein wenig Overhead von JSON in Kauf nehmen, wenn mir dadurch eigenes Parsing erspart bleibt :-)

Re: Text Datei einlesen, liste erstellen, in if verwenden

Verfasst: Montag 16. Februar 2015, 12:59
von Sirius3
Wem JSON zu umständlich ist, kann ja auch YAML verwenden. Ist halt nicht in der Standardbibliothek.

Re: Text Datei einlesen, liste erstellen, in if verwenden

Verfasst: Montag 16. Februar 2015, 14:04
von Kebap
slimcode hat geschrieben:fürs händische erstellen der Fragen ist TXT doch einfacher
Ja, für das Erstellen der Textdatei, vielleicht. Aber nicht für das Auslesen und Weiterverwenden der Liste.

Genau daher entstand ja dieser Thread hier von dir. Natürlich kannst du auch alle Stolperfallen selbst finden.

Es gibt einfach Standards, auf die man leicht aufbauen kann, anstatt ein Rad neu erfinden zu müssen.