Python - 打印时渲染unicode代码

时间:2016-04-05 19:11:22

标签: python elasticsearch unicode

我有一个由Elasticsearch返回的字符串:

\n\nESM Management LLC (\u201cESM\u201d) provides investment

当我打印字符串时,字符串的表示完全如上所示。 我尝试过解码,即s.decode('utf8'),但我认为我对编码/解码过程有一些基本的理解。

如何转换此字符串以便渲染新行并将unicode代码转换为它们代表的符号?

这就是我要找的:

.>>> s = '\n\nESM Management LLC (\u201cESM\u201d) provides investment'
.>>> s
.
.
.ESM Management LLC ("ESM") provides investment 

1 个答案:

答案 0 :(得分:1)

看起来你正在使用python 2。

  1. 对这样的文字使用unicode。
  2. 编码为stdout编码以确保正确打印。
  3. -

    import sys
    
    s = u'\n\nESM Management LLC (\u201cESM\u201d) provides investment'
    print s.encode(sys.stdout.encoding)
    
    
    ESM Management LLC (“ESM”) provides investment
    

    如果你在底部说它是来自其他地方的字节字符串你不能使用unicode文字。使用'unicode-scape'代码解码。

    s = '\n\nESM Management LLC (\u201cESM\u201d) provides investment'
    print s.decode(encoding='unicode-escape').encode(sys.stdout.encoding)
    
    
    ESM Management LLC (“ESM”) provides investment
    

    编辑由于@wim在评论中解释编码为sys.stdout.encoding可能不需要,因为print无论如何都会这样做。根据终端和shell编码,OTOH可能需要额外的解码,但我不确定应该做什么。因此,我将保留答案,因为它有助于OP。有关此主题的更多信息,请参阅this excelent answer