铸造原始字符串python

时间:2010-03-11 19:44:30

标签: python string

给定一个包含字符串的变量,有一种快速方法可以将其转换为另一个原始字符串变量吗?

以下代码应说明我的目标:

line1 = "hurr..\n..durr"
line2 = r"hurr..\n..durr"

print(line1 == line2)  # outputs False
print(("%r"%line1)[1:-1] == line2)  # outputs True

我到目前为止找到的最接近的是%r格式化标志,它似乎返回一个原始字符串,尽管在单引号内。有没有更简单的方法来做这种事情?

3 个答案:

答案 0 :(得分:62)

Python 3:

"hurr..\n..durr".encode('unicode-escape').decode()

Python 2:

"hurr..\n..durr".encode('string-escape')

答案 1 :(得分:1)

另一种方式:

>>> s = "hurr..\n..durr"
>>> print repr(s).strip("'")
hurr..\n..durr

答案 2 :(得分:1)

上面展示了如何编码。

'hurr..\n..durr'.encode('string-escape')

这种方式会解码。

r'hurr..\n..durr'.decode('string-escape')

实施例

In [12]: print 'hurr..\n..durr'.encode('string-escape')
hurr..\n..durr

In [13]: print r'hurr..\n..durr'.decode('string-escape')
hurr..
..durr

这允许人们在两个方向上“转换/转换原始字符串”。一个实际的例子是json包含一个原始字符串,我想很好地打印它。

{
    "Description": "Some lengthy description.\nParagraph 2.\nParagraph 3.",
    ...
}

我会做这样的事情。

print json.dumps(json_dict, indent=4).decode('string-escape')