2017-01-11 35 views
1

'U+1F49A'コーディング規約を使用する長いUnicode定義と説明マッピングがあります。U +ユニコード文字列定義から真のユニコード文字への変換

python(3)では、どのようにこれらを真のUnicode文字として読むことができますか? (すなわち'\u00001F49A'または「」

私は配列スライスや組成など'\U000{}'.format('1F49A')を試みたが、最初の文字列のインスタンス化が部分的Unicode宣言に出クラップスとしてSyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-4: truncated \UXXXXXXXX escapeで終わるしました。

+0

以下の答えはあなたが好奇心なら何をしたいですが、:アリは、あなたがre.sub()の第2引数に同じchr()/int()パターンを使用することができ、より大きな文字列にU+xxxxのすべてのインスタンスを変換します'\ U'表現の使い方は' unicode_escape'を探します。 https://stackoverflow.com/search?q=python+unicode_escape –

答えて

6

ます。また、解析するint()を使用することができます数、および単一文字の文字列に数値を変換するchr()

例:

In [8]: chr(0x1f49a) 
Out[8]: '' 

In [9]: s='U+1F49A' 

In [10]: chr(int(s[2:], 16)) 
Out[10]: '' 

あなたワットの場合

In [14]: s = 'U+1F49A -vs- U+2764' 

In [15]: re.sub(r'U\+([0-9a-fA-F]+)', lambda m: chr(int(m.group(1),16)), s) 
Out[15]: ' -vs- ❤' 
関連する問題