Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: Unicode-merkkikoodit binäärimerkkijonossa

morjels [18.06.2016 09:37:32]

#

Terve,

Pythoni on 2.7.

Tämä toimii:

s=u"j\u00e4\u00e4r\u00e4p\u00e4\u00e4"
print s
jääräpää

Mutta kun se mun stringi sattuu nyt olemaan ilman tuota u:ta ja tällä mennään, niin millä ihmeellä saan sen printtaamaan tuon jääräpää sanan. Olen yrittänyt vaikka minkälaista decode ja encode juttua, mutta ei onnistu. Oikeesti menee hermo.

s="j\u00e4\u00e4r\u00e4p\u00e4\u00e4"
print s
j\u00e4\u00e4r\u00e4p\u00e4\u00e4

kalppi [18.06.2016 14:13:12]

#

Jos stringin välttämättä tuollaisessa muodossa on, niin ensin sinun pitää vaikkapa säännöllisellä lauseella poimia kirjaimien koodit, ja muuttaa ne sitten kirjaimiksi.

import re

s="j\u00e4\u00e4r\u00e4p\u00e4\u00e4"

def replace(m):
	return unichr(int(m.group(1), 16))

print re.sub('\\\u([a-z0-9]{4})', replace, s)

Jaska [18.06.2016 14:13:15]

#

Tarkoitatko tätä?

>>> s="j\u00e4\u00e4r\u00e4p\u00e4\u00e4"
>>> print s
j\u00e4\u00e4r\u00e4p\u00e4\u00e4
>>> print s.decode('unicode-escape')
jääräpää
>>>

kalppi [18.06.2016 14:16:13]

#

Sieltä taisikin tulla enempi pythonia tuntevalta parempi vastaus :)

morjels [18.06.2016 14:30:01]

#

Kiitti!

Se oli just tuo decode('unicode-escape'). Aivan älyttömän vaikea löytää, mutta onneksi on hieno foorumi!

Chiman [21.06.2016 11:30:18]

#

Laitetaan vielä lähdelinkki listaukseen, josta löytyy mm. tuo unicode-escape:
https://docs.python.org/2/library/codecs.html­#python-specific-encodings

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta