Unicode-字符串-列表操作

2024-06-07 06:41:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据类型为unicode的数据s = u"[u'38', u'36', u'34', u'32']" 我想让这些数据成为简单的元素列表,比如s= ['38','36','32']
我尝试使用simple json.loads,但它不能使用简单的json来处理(“[”s“]”)这种类型的字符串不能(“[”s“]),所以任何朋友请引导我了解这个问题

提前谢谢


Tags: 数据字符串json元素类型列表unicode朋友
3条回答

问题是这个字符串不是有效的JSON语法。它是有效的Python语法,但不是JSON,原因有二:

  1. JSON不允许单引号字符串,'38',只允许双引号,"38"
  2. JSON不允许在字符串u"38"之前使用u,只允许使用隐式Unicode、"38"的裸字符串。

您需要更改输入格式,或者使用可以处理Python字符串的东西。

您可以使用eval,它读取包含Python语法的字符串,但是请注意,如果您接受任意输入,这是非常危险的,因为有人可以提供代码来执行。尽管如此,它仍然有效:

>>> 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']

如果^{}可用,则可以使用^{}

相关问题 更多 >