开发者

casting raw strings python [duplicate]

开发者 https://www.devze.com 2022-12-22 12:36 出处:网络
This question already has answers here: Process escape sequences in a string in Python (8 answers) Closed 3 years ago.
This question already has answers here: Process escape sequences in a string in Python (8 answers) Closed 3 years ago.

Given a variable which holds a string is there a quick way to cast that into another raw string variable?

The following code should illustrate what I'm after:

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

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

The closest I have开发者_JAVA技巧 found so far is the %r formatting flag which seems to return a raw string albeit within single quote marks. Is there any easier way to do this kind of thing?


Python 3:

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

Python 2:

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


Yet another way:

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


Above it was shown how to encode.

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

This way will decode.

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

Ex.

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

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

This allows one to "cast/trasform raw strings" in both directions. A practical case is when the json contains a raw string and I want to print it nicely.

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

I would do something like this.

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

精彩评论

暂无评论...
验证码 换一张
取 消