Problem mit line.rstrip()

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.
Antworten
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
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

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(" "))
When we say computer, we mean the electronic computer.
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
Zuletzt geändert von jake-the-snake am Samstag 11. November 2017, 22:43, insgesamt 1-mal geändert.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
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
Antworten