Unicode Combine

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
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Hab ein kleines Problem mit Unicode, ich mag den Buchstaben self.lastfocus[-1].GetValue()[:-1] mit dem Akzent event.GetEventObject().GetLabel() verbinden, das Problem ist das er mir immer folgende Fehlermeldung ausspuckt:
File "wxinterface.py", line 94
comb = u"\N{%s}" % combining
UnicodeDecodeError: 'unicodeescape' codec can't decode bytes in position 0-5: unknown Unicode character name

Code: Alles auswählen

	def CombineChars(self, event):
		# event.GetEventObject().GetLabel() = "ˊ"
		combining = (unicodedata.name(event.GetEventObject().GetLabel())).replace("MODIFIER","COMBINING")
		comb = u"\N{%s}" % combining
		tocombine = self.lastfocus[-1].GetValue()[-1]+comb
		combined = unicodedata.normalize('NFC',tocombine)
		# wxPython stuff
		self.lastfocus[-1].SetValue("%s%s" % (
											  self.lastfocus[-1].GetValue()[:-1],
											  combined
											  )
		)
		self.lastfocus[-1].SetFocus()
		self.lastfocus[-1].SetInsertionPoint(self.lastfocus[-1].GetLastPosition())
Danke fuers lesen!
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
BlackJack

Das klappt nicht weil Escapesequenzen in Zeichenkettenliteralen zur Übersetzungszeit ausgewertet werden. Das sind Konstanten. Und u'\N{%s}' ist falsch, weil '%s' kein Name für ein Unicode-Zeichen ist.

Du brauchst die `lookup()`-Funktion aus dem `unicodedata`-Modul. Die ist das Gegenstück zu `name()`.
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

BlackJack hat geschrieben:Das klappt nicht weil Escapesequenzen in Zeichenkettenliteralen zur Übersetzungszeit ausgewertet werden. Das sind Konstanten. Und u'\N{%s}' ist falsch, weil '%s' kein Name für ein Unicode-Zeichen ist.

Du brauchst die `lookup()`-Funktion aus dem `unicodedata`-Modul. Die ist das Gegenstück zu `name()`.
Aber das moechte ich doch net, wenn ich es hardcode muss ich es doch auch mit {FOO BAR} schreiben...
Mag mich and dieser Stelle auch mal fuer die kompetente Hilfe hier bedanken!
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Antworten