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

问题描述 投票:0回答:3

我有这个字符串:

"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"
python unicode decode encode utf
3个回答
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
投票

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


0
投票

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

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

Binh Thanh, Hồ Chí Minh, Vietnam


© www.soinside.com 2019 - 2024. All rights reserved.