Unicode - 字符串 - 列表操作

发布于 2024-11-01 00:44:58 字数 238 浏览 1 评论 0原文

我有一个数据 s = u"[u'38', u'36', u'34', u'32']" ,其数据类型为 unicode 我想将此数据作为简单的元素列表,例如 s= ['38','36','32'],
我尝试使用 simplejson.loads 但它不起作用简单的 json 使用 ('["s"]') 这种类型的字符串而不是 ("['s']") 所以任何朋友请指导我解决这个问题

提前致谢

I have a data s = u"[u'38', u'36', u'34', u'32']" which has data type unicode
i want to make this data as simple list of element like s= ['38','36','32'],
i try to use simplejson.loads but its not working simple json work with the ('["s"]') this type of string not ("['s']") so any buddy please guide me to get of this problem

thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

千寻… 2024-11-08 00:44:58
>>> 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']
>>> 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']
淡笑忘祈一世凡恋 2024-11-08 00:44:58

如果 ast 可用,您可以使用 ast.literal_eval

If ast is available, you can use ast.literal_eval.

时间你老了 2024-11-08 00:44:58

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

  1. JSON 不允许单引号字符串,'38',仅支持双引号,“38”。
  2. JSON 不允许在字符串 u"38" 之前添加 au,仅允许隐式 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数据结构。

Well the problem is that that string is not valid JSON syntax. It is valid Python syntax, but not JSON, for two reasons:

  1. JSON doesn't allow single-quote strings, '38', only double-quote, "38".
  2. JSON doesn't allow a u before the string, u"38", only bare strings which are implicitly Unicode, "38".

You need to either change the input format, or use something which can process Python strings instead.

You could use eval, which reads strings containing Python syntax, but note that this is highly dangerous if you are accepting arbitrary input, since someone can supply code to execute. Nevertheless, it works:

>>> eval(u"[u'38', u'36', u'34', u'32']")
[u'38', u'36', u'34', u'32']

Edit: khachik's answer is probably better than eval, since it won't be susceptible to evaluating arbitrary Python code, only reading Python data structures.

裂开嘴轻声笑有多痛 2024-11-08 00:44:58

使用 re 模块将字符串拆分为所需的元素。例如

re.findall("u\'([^\']+)\'", u"[u'38', u'36', u'34', u'32']")

Use re module to split your string into needed elements. For example

re.findall("u\'([^\']+)\'", u"[u'38', u'36', u'34', u'32']")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文