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

Why the outputs are different?(how to make print(s1) to output Japanese)

我正在打印一些日语的 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
顧客
顧客

'\u9867\u5BA2' 中的 \u 只是 unicode 字符的 Python 符号,而不是文字 \u,所以你可以' t 只是构建一串文字 \u 以及一些代码,并期望它们代表一个 unicode 字符。

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

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

这输出:

顧客