用Python打印带有特殊字符的字符串

时间:2019-11-05 02:54:23

标签: python unicode decode encode utf

我有这个字符串:

"Binh Thanh, H\\u1ed3 Ch\\u00ed Minh, Vietnam"

我不太确定它的编码方式(unicode / utf-8 ...),但我知道它与该编码相对应:

"Binh Thanh, Hồ Chí Minh, Vietnam"

我想创建一个可以正确显示它的函数

用法:

def display_characters(text):
    print(text)
    # .encode? .decode? utf-8? unicode?


display_characters("Binh Thanh, H\\u1ed3 Ch\\u00ed Minh, Vietnam")

期望:

"Binh Thanh, Hồ Chí Minh, Vietnam"

3 个答案:

答案 0 :(得分:2)

问题是\\,它会创建普通的\,而不是unicode的一部分。

Python具有特殊的编码'raw_unicode_escape''unicode_escape',可帮助解决Unicode中的某些问题。

text = "Binh Thanh, H\\u1ed3 Ch\\u00ed Minh, Vietnam"

text = text.encode().decode('raw_unicode_escape')

print(text)

在此示例中,unicode_escape

也适用
text = text.encode().decode('unicode_escape')

文档:Python Specific Encodings

答案 1 :(得分:1)

由于您的字符串包含\\u而不是\u,所以反斜杠被转义,因此该字符串包含文字反斜杠。如果将其写为"Binh Thanh, H\u1ed3 Ch\u00ed Minh, Vietnam",则\u将是正确的Unicode转义。

答案 2 :(得分:0)

您可以删除斜线并使用打印。我认为多余的斜线会干扰:

print(u"Binh Thanh, H\u1ed3 Ch\u00ed Minh, Vietnam") 

Binh Thanh, Hồ Chí Minh, Vietnam