【问题标题】:Decoding escaped characters解码转义字符
【发布时间】:2014-03-03 06:53:52
【问题描述】:

我正在尝试转换 string1 以便输出与 string2 上的内容一样

string1 = "<value>UK LONDON 8CS Flr01 Rm1\\xc4\\x9f</value>"

string2 = "<value>UK LONDON 8CS Flr01 Rm1ğ</value>"

我正在使用选项有限的 plone,假设我无法导入任何外部库。

当我尝试使用 .decode('unicode-escape') 时,它会返回以下字符串

print string1.decode( 'unicode-escape' )  # prints <value>UK LONDON 8CS Flr01 Rm1Ä</value>

请注意,通过转换 unicode ( \xc4 )

的第一部分需要 Ä

谢谢

【问题讨论】:

    标签: python unicode decode


    【解决方案1】:

    使用string-escape 编码而不是unicode-escape

    >>> print string1.decode('string-escape')
    <value>UK LONDON 8CS Flr01 Rm1ğ</value>
    

    或使用unicode-escape对其进行解码,然后使用latin1编码对其进行编码:

    >>> print string1.decode('unicode-escape').encode('latin1')
    <value>UK LONDON 8CS Flr01 Rm1ğ</value>
    

    注意 string-escape 仅在 Python 2.x 中可用。

    【讨论】:

    • 在 Python 3.x 上怎么样,有什么办法可以转换吗?
    • @user3322418,您需要先在 Python 3.x 中将字符串编码为字节:import sys; sys.stdout.buffer.write(string1.encode().decode('unicode-escape').encode('latin1'))
    • @user3322418,您可以将字节对象传递给 Python 3.x 中的 print 函数。但它不会给你你想要的。这就是我在上一条评论中使用sys.stdout.buffer.write 的原因。
    • @user3322418,参见sys.stdout in Python 3.x documentation:要从/向标准流写入或读取二进制数据,请使用底层二进制缓冲区。 ....
    猜你喜欢
    • 2011-12-29
    • 2016-05-02
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 2011-10-18
    相关资源
    最近更新 更多