微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Unicode-字符串-列表操作

如何解决Unicode-字符串-列表操作

| 我有一个数据类型为unicode的数据0ѭ 我想将此数据作为元素的简单列表,例如
s= [\'38\',\'36\',\'32\']
, 我尝试使用simplejson.loads,但无法正常工作()(\'[\“ s \”] \')这种类型的字符串,而不是(\“ [\'s \'] \”)请指导我解决这个问题 提前致谢     

解决方法

>>> import ast
>>> s = u\"[u\'38\',u\'36\',u\'34\',u\'32\']\"
>>> [ item.encode(\'ascii\') for item in ast.literal_eval(s) ]
[\'38\',\'36\',\'34\',\'32\']
    ,如果
ast
可用,则可以使用use4ѭ。     ,问题是该字符串不是有效的JSON语法。它是有效的Python语法,但不是JSON,有两个原因: JSON不允许单引号字符串
\'38\'
,仅允许双引号字符串
\"38\"
。 JSON不允许在字符串
u\"38\"
之前加u,仅允许隐式Unicode字符串
\"38\"
的裸露字符串。 您需要更改输入格式,或者使用可以处理Python字符串的内容。 您可以使用
eval
读取包含Python语法的字符串,但是请注意,如果您接受任意输入,这将非常危险,因为有人可以提供执行代码。尽管如此,它的工作原理是:
>>> eval(u\"[u\'38\',u\'32\']\")
[u\'38\',u\'32\']
编辑:Khachik的答案可能比ѭ9更好,因为它不容易评估任意Python代码,而仅读取Python数据结构。     ,使用
re
模块将字符串拆分为所需的元素。例如
re.findall(\"u\\\'([^\\\']+)\\\'\",u\"[u\'38\',u\'32\']\")
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。