【问题标题】:Print string with special characters in Python在 Python 中打印带有特殊字符的字符串
【发布时间】:2020-03-01 09:11:45
【问题描述】:

我有这个字符串:

"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


    【解决方案1】:

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

    【讨论】:

      【解决方案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

      【讨论】:

      • 请不要在每个答案中都发布“感谢”cmets。 Stack Overflow 上的惯例是通过投票来奖励好的内容(点击友好的灰色向上箭头)。另见help.
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-27
        • 2014-03-18
        • 1970-01-01
        • 2012-03-14
        • 1970-01-01
        • 2015-08-14
        • 2013-08-12
        • 1970-01-01
        相关资源
        最近更新 更多