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 :arrow: :idea:

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) :D

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 ;)

Code: Alles auswählen

 name = name.strip("\n")
targetfile.write(name)
Woebi du dann an einander klebende Namen hast, also vielleicht besser

Code: Alles auswählen

name = name.replace("\n", " ")
targetfile.write(name)
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 :wink:

@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