2024-06-07 06:41:01 发布
网友
我有一个数据类型为unicode的数据s = u"[u'38', u'36', u'34', u'32']" 我想让这些数据成为简单的元素列表,比如s= ['38','36','32'], 我尝试使用simple json.loads,但它不能使用简单的json来处理(“[”s“]”)这种类型的字符串不能(“[”s“]),所以任何朋友请引导我了解这个问题
s = u"[u'38', u'36', u'34', u'32']"
s= ['38','36','32']
提前谢谢
问题是这个字符串不是有效的JSON语法。它是有效的Python语法,但不是JSON,原因有二:
'38'
"38"
u"38"
您需要更改输入格式,或者使用可以处理Python字符串的东西。
您可以使用eval,它读取包含Python语法的字符串,但是请注意,如果您接受任意输入,这是非常危险的,因为有人可以提供代码来执行。尽管如此,它仍然有效:
eval
>>> eval(u"[u'38', u'36', u'34', u'32']") [u'38', u'36', u'34', u'32']
编辑:khachik的答案可能比eval更好,因为它不易评估任意Python代码,只读取Python数据结构。
>>> 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']
如果^{}可用,则可以使用^{}。
问题是这个字符串不是有效的JSON语法。它是有效的Python语法,但不是JSON,原因有二:
'38'
,只允许双引号,"38"
。u"38"
之前使用u,只允许使用隐式Unicode、"38"
的裸字符串。您需要更改输入格式,或者使用可以处理Python字符串的东西。
您可以使用
eval
,它读取包含Python语法的字符串,但是请注意,如果您接受任意输入,这是非常危险的,因为有人可以提供代码来执行。尽管如此,它仍然有效:编辑:khachik的答案可能比
eval
更好,因为它不易评估任意Python代码,只读取Python数据结构。如果^{} 可用,则可以使用^{} 。
相关问题 更多 >
编程相关推荐