ubuntuusers.de

python: strip() funktioniert nicht wie erwartet

Status: Gelöst | Ubuntu-Version: Server 20.04 (Focal Fossa)
Antworten |

frechdachs

Anmeldungsdatum:
3. Juni 2013

Beiträge: 120

Hallo zusammen,

ich möchte mich gerne mit der Programmiersprache python beschäftigen. Am Wochenende habe ich meine ersten Programme geschrieben und bin dabei auf etwas gestoßen, was ich nicht wirklich verstehe.

Es geht um ein ganz einfaches Programm:

1
2
3
4
5
6
7
#!/usr/bin/python3

zahl=50
string_zahl=str(zahl)

print("Die Zahl lautet", zahl, ".")
print("Die Zahl lautet", string_zahl.strip(), ".")

Wenn ich das Script ausführe, dann wird folgendes ausgegeben:

1
2
Die Zahl lautet 50 .
Die Zahl lautet 50 .

Ich hätte erwartet, dass zumindest in Zeile 2 das Ergebnis so aussehen würde:

1
Die Zahl lautet50.

Ich frage mich, woher in Zeile 2 die Leerzeichen kommen - denn durch den strip()-Befehl sollen ja Leerzeichen herausgefiltert werden. Aber auch die Ausgabe in Zeile 1 finde ich merkwürdig: Warum werden auch hier Leerzeichen ausgegeben?

Dann habe ich das Programm so angepasst:

1
2
3
4
5
6
7
#!/usr/bin/python3

zahl=50
string_zahl="50"

print("Die Zahl lautet", zahl, ".")
print("Die Zahl lautet", string_zahl.strip(), ".")

Aber auch hier ist das Ergebnis gleich:

1
2
Die Zahl lautet 50 .
Die Zahl lautet 50 .

Auch hier: Woher kommen die Leerzeichen - speziell in Zeile 2? Warum werden diese durch den strip()-Befehl nicht elemeniert?

Vielen Dank für Eure Hilfe.

Liebe Grüße,

frechdachs

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

Der Space kommt vom separator der print-Funktion: https://docs.python.org/3/library/functions.html?highlight=sep#print

Vielleicht wolltest du String-Concatenation machen?

frechdachs

(Themenstarter)

Anmeldungsdatum:
3. Juni 2013

Beiträge: 120

sebix schrieb:

Der Space kommt vom separator der print-Funktion: https://docs.python.org/3/library/functions.html?highlight=sep#print

Ah, OK.

Ich habe meinen Quellcode nun wie folgt angepasst:

1
2
3
4
5
6
#!/usr/bin/python3

zahl=50
string_zahl=str(zahl)

print("Die Zahl lautet " + string_zahl + ".")

Das führt zum gewünschten Ergebnis.

Oder auch so:

1
2
3
4
5
6
7
#!/usr/bin/python3

zahl=50
string_zahl="50"

print("Die Zahl lautet ", zahl, ".", sep='')
print("Die Zahl lautet ", string_zahl.strip(), ".", sep='')

Das führt zum gewünschten Ergebnis:

1
2
Die Zahl lautet 50.
Die Zahl lautet 50.

Herzlichen Dank für die schnelle Hilfe!

Liebe Grüße,

frechdachs

Axel-Erfurt

Anmeldungsdatum:
18. Mai 2016

Beiträge: 1347

Heute macht man das einfach mit f-strings die ab python3.6 eingeführt wurden.

Man setzt ein f voran und schreibt den Wert der Variable in geschweifte Klammern.

1
2
3
4
zahl=50
string_zahl=str(zahl)

print(f"Die Zahl lautet {zahl}.")

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

Ich habe meinen Quellcode nun wie folgt angepasst:

Das ist beides nicht pythonisch. Entweder nimmst du wie schon gesagt f-Strings oder die format-Methode von Strings. Aber kein + oder ,.

Gruß, noisefloor

frechdachs

(Themenstarter)

Anmeldungsdatum:
3. Juni 2013

Beiträge: 120

Hallo zusammen,

vielen Dank für die Hinweise. Dann weiß ich Bescheid.

Liebe Grüße,

frechdachs

snafu1

Avatar von snafu1

Anmeldungsdatum:
5. September 2007

Beiträge: 2133

Wohnort: Gelsenkirchen

Und falls das nicht klar geworden ist: Bei f-Strings kann auch das str() wegfallen, denn das wird in dem Fall sowieso automatisch gemacht. Dann braucht man kein "string_zahl" mehr.

Antworten |