Seite 1 von 1
Problem mit *.txt datei
Verfasst: Dienstag 2. Dezember 2008, 17:10
von Wunder
Hallo 1.mal
Ich habe ein kleines Problem:
Ich möchte ein Programm schreiben das Wörter generiert, leider ist in einer *.txt die ich dazu lade hinter jdem wort ein "/n" so kann man z.B. nicht
"HansPeter" schreiben daraus wird->
Hans
Peter
Hier der code bisher
Über rege hilfe freue ich mich
Code: Alles auswählen
import random
print ""
print "----------------"
print "Namengenerator"
print "----------------"
print ""
a = input("? ")
b = open ("namen.txt", "r")
c = open ("danach.txt", "w")
d = 1
while a >= d:
Verfasst: Dienstag 2. Dezember 2008, 17:20
von derdon
Verfasst: Dienstag 2. Dezember 2008, 17:23
von cofi
Du meinst wohl `\n' ?
Benutze statt input lieber int(raw_input(..)).
Lass die Leerzeichen vor den Klammern weg.
Schreib was du genau machen willst - und zwar in einem verständlichen Deutsch -, denn aus dem Code erkennt man das nicht.
Dein Code sieht nämlich eher danach aus als wördest du zufällig Namen aus einer Datei in die andere schieben.
Und hilfreich wäre ausserdem zu erfahren, was denn überhaupt das Problem ist oO
Verfasst: Dienstag 2. Dezember 2008, 17:31
von Wunder
So danke für die antworten (ging ja schnell)
So da du fragtest was das programm macht:
Es liest (sollte) eine Datei aus und speichert das ausgelesene mit einem anhang in der anderen *.txt Datei.
Das Problem besteht darin das immer (nach jedem Wort) eine neue Zeile angefangen wird.
(Meine Rechtschreibung ist nicht prickelnd ich weiß)
mfg
Verfasst: Dienstag 2. Dezember 2008, 17:37
von cofi
Hmm nunja .. dein Code macht das nicht so ganz
Woebi du dann an einander klebende Namen hast, also vielleicht besser
Unter Windows-Systemen evtl `\r\n' statt `\n'
Verfasst: Dienstag 2. Dezember 2008, 17:40
von derdon
Denk dir mal bessere Namen für Varaiblen aus. Generell ist PEP8 eine schöne Sache. Wenn du noch Anfänger bist, hilft es auf einen Schmierzettel in Stichworten aufzuschreiben, was das Programm machen soll und in welcher Reihenfolge das passieren soll.
- Datei lesen
- Inhalt der Datei in Variable `file_before` speichern
- Inhalt der Variable `file_before` ausgeben
- Datei schließen
- mit raw_input() Benutzereingabe entgegennehmen und in Variable `to_file` speichern
- `to_file` in Datei schreiben (modus "a")
- Datei schließen
Das [wiki=Tutorial/with]with-statement[/wiki] ist sehr nützlich, wenn man mit Dateien arbeitet. Wenn ich dich falsch versanden hab, einfach Bescheid sagen
@cofi: es gibt os.linesep
Verfasst: Dienstag 2. Dezember 2008, 18:12
von Y0Gi
derdon hat geschrieben:@cofi: es gibt os.linesep
Und was soll das bringen, wenn man nicht weiß, woher die Datei kommt oder ein "unpassendes" Betriebssystem benutzt?
Wenn's robust sein soll, mit `line.strip()` allen Whitespace wegwerfen und gut. Die Daten dürften anschließend in einer Liste landen, daher ist das mit dem `.replace()` keine so passende Idee; für die *spätere* Darstellung dürfen dann gerne der `%`-Operator und/oder `.join()` verwendet werden.
Verfasst: Mittwoch 3. Dezember 2008, 14:33
von sma
`readlines()` oder `readlines(False)` liest eine Textdatei zeilenweise und entfernt die Zeilenendzeichen. `readlines(True)` lässt sie stehen. Die erste Variante ist, was man haben will. `readlines` ist eine Methode von `file`, dem Objekt, was `open()` zurückliefert.
Stefan