Seite 1 von 1

Problem mit line.rstrip()

Verfasst: Samstag 11. November 2017, 22:29
von jake-the-snake
Abend Forum

Ich habe in einer Datei den Text...
[codebox=text file=Unbenannt.txt]hallo hallo hallohallo[/code]
... stehen.

Es macht jetzt keinen Unterschied, ob ich...

Code: Alles auswählen

print(line.rstrip())
...oder...

Code: Alles auswählen

print(line)
...schreibe.
Müsste rstrip nicht die WhiteSpaces (Leerzeichen) aus dem Text entfernen.
Ich habe mir ein Beispiel aus der Doku geholt und mir etwas zurecht gebogen (Variable für Pfad und fh für FileHandler eingefügt)
Hier mal der vorläufige "Probecode". Und ja, ich weiss, dass ich mir nocht irgendwie einen Fehlerabfangmechanismus einbauen muss,
falls die zu lesende Datei gar nicht existiert. Aber eines nach dem anderen:

Code: Alles auswählen

# Datei zum Lesen oeffnen und am Ende schliessen
usbfh = open(usbpath, "r")
for line in usbfh:
    print(line.rstrip())
usbfh.close()
Syntaxfehler werden keine angezeigt. rstrip() scheint aber auch nicht gemacht zu werden. Sonst müsste der Text doch so aussehen:
[codebox=text file=Unbenannt.txt]hallohallohallohallo[/code]
...oder irre ich mich da?

Gruß jts

Re: Problem mit line.rstrip()

Verfasst: Samstag 11. November 2017, 22:37
von sls
Hi,

split() entfernt nur die entsprechenden Zeichen am Beginn und Ende eines Strings.

Warum verwendest du nicht die split()-Methode?

Code: Alles auswählen

"".join("hallo hallo hallohallo".split(" "))

Re: Problem mit line.rstrip()

Verfasst: Samstag 11. November 2017, 22:42
von jake-the-snake
Hallo sls

Ich muss die Frage anders stellen:

Welche Aufgabe (Sinn) hat eigentlich Zeile 4 in dem Mini-Script:

Code: Alles auswählen

    # Datei zum Lesen oeffnen und am Ende schliessen
    usbfh = open(usbpath, "r")
    for line in usbfh:
        print(line.rstrip())
    usbfh.close()
bzw. braucht man das?

Gruss jts

Re: Problem mit line.rstrip()

Verfasst: Samstag 11. November 2017, 22:43
von Sirius3
@jake-the-snake: Du irrst Dich. `rstrip` liefert einen String zurück, der keine Leerzeichen mehr am Ende enthält, also bei Zeilen aus einer Datei insbesondere das Neue-Zeile-Zeichen. Und den Unterschied solltest Du eigentlich sehen.

Re: Problem mit line.rstrip()

Verfasst: Samstag 11. November 2017, 22:46
von jake-the-snake
Hallo Sirius3

Also wird der Umbruch \n am Ende der eingelesenen Datei entfernt?

Gruß jts

Nachtrag:
Der Text in der Datei:
[codebox=text file=Unbenannt.txt]hallo hallo hallohallo
hallohallo
haaaaallllllooooo
[/code]

...sieht ohne strip() bei Ausgabe so aus:
[codebox=text file=Unbenannt.txt]hallo hallo hallohallo

hallohallo

haaaaallllllooooo
[/code]

Also brauche ich das rstrip(), damit die Ausgabe identisch mit der Eingabe (dem Dateiinhalt/Text) ist. Vielen Dank an alle.

Gruß jts