Seite 1 von 1

Probleme mit » und « im String finden

Verfasst: Mittwoch 19. Februar 2014, 18:13
von magmdot
Hallo

Ich möchte in einer Textdatei nach » und « suchen und beide Symbole durch " ersetzen. Oder zumindest am Ende einen String bekommen, bei dem das ersetzt ist:

Code: Alles auswählen

import codecs 

...


f = codecs.open('beispiel.txt', "r", "utf-8")
s = mmap.mmap(f.fileno(), 0,access=mmap.ACCESS_READ)
q=""
for i in range(0, len(s)):
	if s[i] in set([ '»', '«']):
		q=q+'"'
	else:
		q=q+s[i]
print(q)	
Hier findet er nichts und ersetzt deshalb nichts :(.

wenn ich
q="" duch q=u"" ersetzte, sagt der:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0: ordinal not in range(128)

Mit anderen Umlauten etc habe ich keine Probleme ....

Danke im für etwaige Hilfe :).
Viele Grüße, magmdot

edit- ich benutze Python2.x


ob, ich hab ein Pearl Script schreiben können, dass das Problem behebt...

Re: Probleme mit » und « im String finden

Verfasst: Mittwoch 19. Februar 2014, 19:59
von Sirius3
@magmdot: eine MemoryMap zu verwenden ist in den meisten Fällen zu kompliziert und macht den Code unverständlich. Über den Index einer Liste zu iterieren ist in Python ein Anti-Pattern, weil man gleich direkt über die Elemente iterieren kann. Ein Set für zwei Elemente ist wahrscheinlich langsamer als der "in"-Vergleich in einer 2-elementigen Liste. Auch dieses Set bei jedem for-Schleifenschritt neu zu erzeugen, ist langsam. Stingoperationen sind im Allgemeinen am leichtesten zu verstehen und am schnellsten:

Code: Alles auswählen

q = s.replace('«', '"').replace('»', '"')

Re: Probleme mit » und « im String finden

Verfasst: Mittwoch 19. Februar 2014, 20:51
von magmdot
danke!

oh man.. jetzt ergibt sich hier ein Riesenproblem. da muss ich morgen mal fragen ...