![](/img/trans.png)
[英]How do convert unicode escape sequences to unicode characters in a python string
[英]Convert a string with escape sequences to their original character representation in python
假设我有一个程序接收我无法真正控制的输入。 以下变量按原样输入(我们无法在此处更改输入):
a = "C:\temp"
b = "C:\games"
c = "Hello World"
d = "\t"
不幸的是,Python会误解事物并放入转义序列:
In [138]: a[2]
Out[138]: '\t'
In [139]: b[2]
Out[139]: '\\'
In [140]: d[0]
Out[140]: '\t'
假设已经找到答案。 它应该执行以下操作:
def answer(x):
pass #TODO: your code goes here
所需的输出:
In [200]: answer(a)[2]
Out [201]: '\\'
In [202]: answer(a)[3]
Out [203]: 't'
In [204]: answer(b)[2]
Out [205]: '\\'
In [206]: answer(b)[3]
Out [207]: 'g'
In [208]: answer(c)
Out [209]: 'Hello World'
我已经尝试使用ast模块并使用解码,但无济于事:
In [144]: import ast
In [145]: ast.literal_eval(a)
File "<unknown>", line 1
C: emp
^
SyntaxError: invalid syntax
或与解码:
In [147]: a.decode('string-escape')[2]
Out[147]: '\t'
解决answer()
编辑:“ \\”,而不是[204]示例中的“ \\”
您必须使用encode
而不是decode
:
>>> "\t".encode('string-escape')
'\\t'
您可以使用repr
将此字符串转换为它们的表示形式,然后剥离'
和"
并使用char:
>>> a = 'C:\temp'
>>> a[2]
'\t'
>>> repr(a).strip('\'"')[2]
'\\'
这个问题的answer
,看起来像
def answer(x): return repr(x).strip('\'"')
如果我理解您的问题,则应使用repr
将字符串转换为其原始表示形式,然后使用str.partition()
如下例所示:
>>> a = 'C:\temp'
>>> repr(a).partition('\\')
("'C:", '\\', "temp'")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.