如何解决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 举报,一经查实,本站将立刻删除。