为什么输出不同?(如何使print(s1)输出日语)

时间:2019-04-09 03:16:57

标签: python-3.x python-unicode

我正在打印一些日语的unicode字符串, 为什么print(s1)直接输出日语的unicode,而不是与s2日语相同?如何使s1输出“顾客”? 谢谢。

s_before = r'\(9867)\(5BA2)'
s1 = s_before.replace('(','').replace(')','').replace('\\','\\u')
print(s1)
s2 = '\u9867\u5BA2'
print('\u9867\u5BA2')
print(s2)

我希望输出如下:

顧客
顧客
顧客

但实际输出如下:

\u9867\u5BA2
顧客
顧客

1 个答案:

答案 0 :(得分:0)

\u中的'\u9867\u5BA2'只是一个Unicode字符的Python表示法,而不是文字的\u,因此您不能只构建一个字符串文字\u以及一些代码,并希望它们代表一个unicode字符。

您可以改为将字符串编码为字节,然后使用unicode_escape编码对其进行解码,以使其成为实际的unicode字符串:

s_before = r'\(9867)\(5BA2)'
s1 = s_before.replace('(','').replace(')','').replace('\\','\\u').encode().decode('unicode_escape')
print(s1)

这将输出:

顧客