现在我有字符串s =" \\ u653e"
我想将此字符串转换为s =" \ u653e"
我试着说清楚:
# this is what I want
>>s
>>'\u653e'
# this is not what I want, print will escape the string automatically
>>print s
>>\653e
我该怎么做?
最初的问题是
我有一个字符串s = u' \ u653e',[s] = [u' \ u653e'] 所以我想删除你,也就是说,[s] = [' \ u653e']
所以我只使用命令ast.literal_eval(json.dumps(r))来获取上面的字符串" \\ u653e"
更新 谢谢tdelaney
从整个列表创建字符串会导致我的问题。我应该做的是使用unicode字符串开始并从其各个元素而不是整个列表构建列表。有关详细信息,您可以看到他的答案。
答案 0 :(得分:1)
s
是一个单一的unicode角色。 "\u653e
是python用于表示ascii文本中的unicode字符的文字编码。 unicode_escape
编解码器在这些类型之间进行转换。
>>> s = u'\u653e'
>>> print type(s), len(s), s
<type 'unicode'> 1 放
>>> encoded = s.encode('unicode_escape')
>>> print type(encoded), len(encoded), encoded
<type 'str'> 6 \u653e
在您的示例中,只需执行
s = u'\u653e'
somelist = [s.encode('unicode_escape')]
>>> print somelist
['\\u653e']
>>> print somelist[0]
\u653e
<强>更新强>
根据您的评论,您的问题可能是您创建命令字符串的方式。字符串的python表示与字符串本身相似似乎存在问题。使用unicode字符串开始并从其各个元素而不是整个列表构建列表。
>>> excel = [u'\u4e00', u'\u4e8c', u'\u4e09']
>>> cmd = u'create vertex v set s = [{}]'.format(u','.join(excel))
>>> cmd
u'create vertex v set s = [\u4e00,\u4e8c,\u4e09]'
>>> print cmd
create vertex v set s = [一,二,三]