有时当我从文件或用户那里获得输入时,我会得到一个包含转义序列的字符串.我想以与Python处理字符串文字中的转义序列相同的方式处理转义序列.
例如,假设myString定义为:
>>> myString = "spam\\neggs"
>>> print(myString)
spam\neggs
Run Code Online (Sandbox Code Playgroud)
我想要一个函数(我会称之为process)这样做:
>>> print(process(myString))
spam
eggs
Run Code Online (Sandbox Code Playgroud)
重要的是该函数可以处理Python中的所有转义序列(在上面链接的表中列出).
Python有功能吗?
我有一些需要转义的转义字符串.我想用Python做这件事.
例如,在python2.7中,我可以这样做:
>>> "\\123omething special".decode('string-escape')
'Something special'
>>>
Run Code Online (Sandbox Code Playgroud)
我如何在Python3中完成它?这不起作用:
>>> b"\\123omething special".decode('string-escape')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
LookupError: unknown encoding: string-escape
>>>
Run Code Online (Sandbox Code Playgroud)
我的目标是成为一个像这样的字符串:
s\000u\000p\000p\000o\000r\000t\000@\000p\000s\000i\000l\000o\000c\000.\000c\000o\000m\000
Run Code Online (Sandbox Code Playgroud)
把它变成:
"support@psiloc.com"
Run Code Online (Sandbox Code Playgroud)
在进行转换之后,我将探测我的字符串是用UTF-8还是UTF-16编码的.
我正在尝试将此字符串转换为python dict:
q = '{"request_body": "{\\x22username\\x22:\\x222\\x22,\\x22password\\x22:\\x226\\x22,\\x22id\\x22:\\x22e2cad174-736e-3041-cf7e\\x22, \\x22FName\\x22:\\x22HS\\x22}", "request_method": "POST"}'
Run Code Online (Sandbox Code Playgroud)
当我这样做json.loads(a)给我一个错误simplejson.decoder.JSONDecodeError: Invalid \escape: line 1 column 19 (char 19).所以我决定转换\x22成 ".我听从了这个问题的建议.
>>> q.decode('string_escape')
'{"request_body": "{"username":"2","password":"6","id":"e2cad174-736e-3041-cf7e", "FName":"HS"}", "request_method": "POST"}'
>>>
Run Code Online (Sandbox Code Playgroud)
但那"{"部分之后无效.所以我的问题是将字符串q转换为python dict 的可能方法是什么?