str.find() funktioniert nicht, oder mach ich was falsch?

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
epsilon
User
Beiträge: 71
Registriert: Freitag 20. Juni 2008, 19:48

Hallo,

kann mit jemand sagen, warum der code hier:

Code: Alles auswählen

f = open(Datei)
cnt = 1
for line in f:
	if line.find(' ') == -1:
		print 'line:', cnt, line,
	cnt += 1
zum Beispiel sowas zurück gibt:
line: 1205494 43° 26′ 25
line: 1209306 4.895 msnm
line: 1209314 4.895 msnm
line: 1209317 4.970 msnm
line: 1212420 4. März 1904greg
Eigentlich sollten doch nur Zeilen ohne Leerzeichen ausgegeben werden.
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

ich würds so machen:

Code: Alles auswählen

if not ' ' in my_string:
    print my_string
epsilon
User
Beiträge: 71
Registriert: Freitag 20. Juni 2008, 19:48

Stimmt, die Schreibweise ist besser. Danke.
Wobei ich

Code: Alles auswählen

if ' ' not in line:
	print 'line:', cnt, line,
sogar noch besser finde ;)

Das Ergebnis ist allerdings bei allen 3 Schreibweisen das Gleiche. Woran könnte das denn liegen? Der Großteil der Zeilen mit Leerzeichen, wird auch als solche Erkannt.
BlackJack

Lass Dir die Zeile mal mit `repr()` anzeigen. Ich würde bei den gezeigten Zeilen darauf tippen, dass da ein "non breakable space" enthalten ist, statt normale Leerzeichen.
epsilon
User
Beiträge: 71
Registriert: Freitag 20. Juni 2008, 19:48

Du hast Recht. Die Leerzeichen sind alle '\xc2\xa0'.
Danke, ich glaub da wär' ich nie drauf gekommen.
Antworten