2016-11-28 9 views
0

アラビア語のフレーズを対応するユニコード表現の文字列に変換しようとしていますが、アラビア語のテキストに対しては問題ありません。Python:スペースやその他の特別な文字を対応するユニコード表現に変換する

>>> a = ' مساء الخير' 
>>> a.strip().decode('utf-8').encode('unicode-escape') 
'\\u0645\\u0633\\u0627\\u0621 \\u0627\\u0644\\u062e\\u064a\\u0631' 

ただし、スペース文字をユニコード表現( '\ u0020')に変換したい場合もあります。私は '、'、 '、'などのような他の文字と同様の動作を観察しています。最後に、文字列内の各文字のユニコード値をリストとして取得したい(単に現在の文字列を区切り記号 ' uが」私にスペース文字が前のUnicode表現と組み合わせてしまうと、誤ったスプリット)

>>> a.strip().decode('utf-8').encode('unicode-escape').split('\\u') 
['', '0645', '0633', '0627', '0621 ', '0627', '0644', '062e', '064a', '0631'] 

などを提供します。私は現在の[... '0621' ...]の代わりに[... '0621'、 '0020' ...]をしたいです

答えて

2

それはあなたがそれを必要としないあなたが他を維持したい場合は、しかし、文字列からUnicode文字のリストを作成し、個別に処理するために、単純に次のようになります。

[ '%04x' % (ord(i),) for i in a.strip().decode('utf8') ] 

をしたり、formatを使用するprefere場合(これは今より良いです)予想通り

[ '{0:04x}'.format(ord(i)) for i in a.strip().decode('utf8') ] 

両方収率:

['0645', '0633', '0627', '0621', '0020', '0627', '0644', '062e', '064a', '0631'] 
1

文字列をユニコード文字列として作成(スキャン/読み取り)しない特別な理由は何ですか?

In [14]: a = u' مساء الخير' 

In [15]: [hex(ord(i)) for i in a] 
Out[15]: 
['0x20', 
'0x645', 
'0x633', 
'0x627', 
'0x621', 
'0x20', 
'0x627', 
'0x644', 
'0x62e', 
'0x64a', 
'0x631'] 
+0

私はPython文字列エンコーディングには新しいです。この方法でPython文字列をトラバースすることができるかどうかはわかりませんでした。このソリューションは正常に動作します!ありがとう:) – NightFury13

関連する問題