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.
Kopie ist eigentlich das falsche Wort. (Die Strings sind ja nicht identisch)
Strings sind nicht veränderbar. Das heißt, wenn du einen String veränderst, dann erzeugst du einen neuen. Du erzeugst hier also für jede Zeile einen neuen String.
Listen sind da ganz anders. Die kann man verändern. Deshalb fuktioniert sort so:
Ich halte `strip` für keine gute Idee, da es möglicherweise zu viel entfernt. Vielleicht sind die Leerzeichen am *Anfang* einer Zeile ja wichtig. Besser ist `rstrip("\n")`.
Dabei verlasse ich mich darauf, dass nicht jemand eine von Windows geschriebene Textdatei als Binärdatei öffnet und daher da auch immer noch `\r`-Zeichen drin sind.
@sma: strip() entfernt (wenn kein anderes Argument gegeben) nicht nur Leerzeichen und Newlines, sondern alle Zeichen die python as "whitespace" definiert, also string.whitespace. Dabei ist auch \r enthalten.
Eigentlich dachte ich, daß readlines() einen Parameter anbietet durch welchen man die Entfernung von Newline Zeichen forcieren kann, aber das stimmt so nicht, ich hatte readlines() mit str.splitlines() verwechselt - diese hat genau einen solchen Parameter.
Ich würde wohl anstatt "line = line.strip()" zu verwenden über "imap(str.strip, fp)" iterieren.
str1442 hat geschrieben:@sma: strip() entfernt (wenn kein anderes Argument gegeben) nicht nur Leerzeichen und Newlines, sondern alle Zeichen die python as "whitespace" definiert, also string.whitespace. Dabei ist auch \r enthalten.
Ich weiß. Aber es entfernt eben auch Leerzeichen am Anfang einer Zeile oder Leerzeichen am Ende einer Zeile, die man vielleicht behalten will. Man denke nur mal an Python-Programme die komplett kaputt gehen, wenn man die Leerzeichen (oder TABs) am Anfang alle entfernt.