2016-11-28 34 views
0

我试图将阿拉伯语短语转换为其相应的unicode表示字符串,并且它对阿拉伯文本正常工作。Python:将空间(和其他特殊字符如。)转换为其相应的Unicode代表

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

但是,我还希望将空格字符转换为其unicode表示('\ u0020')。我正在观察与'。',','等其他字符类似的行为。我最终希望获取字符串中每个字符的Unicode值作为列表(简单地用分隔符“\”分隔当前字符串\ U”给我的空间性格变得与以前的Unicode表示合并不正确的拆分)

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

如。我想[...'0621','0020'...]而不是当前[...'0621'...]

回答

2

剥离你的第一个空间并不需要它,但如果你想保留另一方面,它会更简单,以从字符串建立的Unicode字符的列表,并单独处理的字符:

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

,或者如果您prefere使用format(也就是现在的更好)

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

两个预期收益率:

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

任何特殊的原因,你不首先创建(扫描/读取)字符串作为unicode字符串?

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

相关问题