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\']\")