【问题标题】:Converting \x escaped string to UTF-8 [duplicate]将 \x 转义字符串转换为 UTF-8 [重复]
【发布时间】:2013-08-09 18:47:27
【问题描述】:

如何将看起来像 '\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82' 的字符串转换为 Perl 或 Python 可读的字符串?

【问题讨论】:

  • Из файла читаю, error_log Апача
  • @alecxe,我替换了这个词。谢谢。
  • @synapse, тогда 编解码器和字符串转义。 ответ ниже.
  • 不是重复的,因为他/她也要求在 python 中进行转换在 perl 中评估转义序列并不能回答这个问题

标签: python perl unicode


【解决方案1】:

在 python 2.7 中

>>> print '\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
привет

>>> print '\\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xb2\\xd0\\xb5\\xd1\\x82'.decode('string-escape')
привет
>>> print r'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'.decode('string-escape')
привет

在 python 3.x 中

>>> br'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'.decode('unicode-escape').encode('latin1').decode('utf-8')
'привет'

【讨论】:

  • >>> print '\xd0\xb6\xd0\xbe\xd0\xbf\xd0\xb0' жопа
  • @eri,你是对的。谢谢。
  • 我建议@synapse 有 r'\xd0\xb6\xd0\xbe\xd0\xbf\xd0\xb0',即带有斜杠的字符串。
  • @eri,我故意使用 '\\' 而不是原始字符串,因为这个问题不是 Python 独有的问题。
  • @falsetru 顺便说一句,这是俄语中相当粗鲁的词:)
【解决方案2】:

对于文件读取,您可以使用它而不是 open():

import codecs
with codecs.open('filename','r','string-escape') as f:
    data=f.read()

data 将在读取f 时重新编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2012-02-20
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多