Я печатаю некоторые строки, которые являются японским юникодом, почему print(s1) выводит японский юникод напрямую, а не японский с 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
顧客
顧客
\u
в '\u9867\u5BA2'
— это просто нотация Python для символа юникода, а не литералы \
и u
, поэтому вы не можете просто построить строку из литералов \
и u
и некоторых кодов и ожидать, что они будут представлять один символ юникода.
Вместо этого вы можете закодировать строку в байты, а затем декодировать ее с помощью кодировки unicode_escape
, чтобы сделать ее фактической строкой Unicode:
s_before = r'\(9867)\(5BA2)'
s1 = s_before.replace('(','').replace(')','').replace('\\','\\u').encode().decode('unicode_escape')
print(s1)
Это выводит:
顧客