我有一串unicode序号(十六进制格式),如下所示:
\u063a\u064a\u0646\u064a\u0627
它是阿拉伯语字符串غينيا
(来自阿拉伯语lorem ipsum生成器)的unicode表示。在
我想将unicode十六进制字符串转换为غينيا
。我尝试了print u'%s' % "\u063a\u064a\u0646\u064a\u0627"
(指出了here),但这只是返回十六进制格式,而不是符号。print word.replace("\u","\\u")
也不起作用。怎么办?在
Tags:
从这个问题上我不能完全确定你想要什么,所以我会把我能看到的两种情况都包括进去。在
案例1:您只想从代码中输出阿拉伯语字符串,使用unicode文本语法。在这种情况下,您应该在字符串文本前面加一个u,这样就可以像rain一样:
这可能与
^{pr2}$除了较短的。在这种情况下,将一个空字符串格式化为格式化字符串没有任何意义,因为它不会改变任何东西——换句话说,
u'%s' % s == s
。在案例2:您有一个来自其他源的转义字符串,您希望将其作为Unicode字符串进行求值。这看起来像是你想用
print u'%s' %
来做的。这可以用注意,与}不允许类似函数调用的任何操作。还要注意,这里的s是一个以r为前缀的字符串,因此反斜杠没有转义,而是字面上的反斜杠字符。在
eval
不同的是,这是安全的,因为{两段代码都正确输出
关于案例1的
^{pr2}$print u'%s' % s
的一些详细说明。它的行为不同,因为如果字符串已经被转义,它将不会像Unicode文本那样在格式中进行计算。这是因为Python实际上只在第一次计算Unicode文本类表达式(如s)的基础上构建Unicode。如果它已经被转义,那么使用普通的字符串操作就有点遥不可及了,因此您必须使用literal_eval
再次计算它,以便正确地打印字符串。当你跑的时候输出是
请注意,这不是Unicode对象的表示,而是带有一些反斜杠和字符的ascii字符串。在
相关问题 更多 >
编程相关推荐