Seite 1 von 1

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

Verfasst: Sonntag 20. Juli 2008, 20:33
von epsilon
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.

Verfasst: Sonntag 20. Juli 2008, 20:34
von audax
ich würds so machen:

Code: Alles auswählen

if not ' ' in my_string:
    print my_string

Verfasst: Sonntag 20. Juli 2008, 20:44
von epsilon
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.

Verfasst: Sonntag 20. Juli 2008, 21:09
von 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.

Verfasst: Sonntag 20. Juli 2008, 21:28
von epsilon
Du hast Recht. Die Leerzeichen sind alle '\xc2\xa0'.
Danke, ich glaub da wär' ich nie drauf gekommen.