猿问

将列表的字符串表示转换为列表

将列表的字符串表示转换为列表

我想知道最简单的方法是将string如下列表转换为list

x = u'[ "A","B","C" , " D"]'

即使用户在逗号和引号内的空格之间放置空格也是如此。我需要处理它:

x = ["A", "B", "C", "D"]

在Python中。

我知道我可以剥夺的空间与strip()split()使用拆分操作和检查非字母。但是代码变得非常糟糕。有一个我不知道的快速功能吗?


慕丝7291255
浏览 1403回答 4
4回答

慕尼黑5688855

>>> import ast>>> x = u'[ "A","B","C" , " D"]'>>> x = ast.literal_eval(x)>>> x['A', 'B', 'C', ' D']>>> x = [n.strip() for n in x]>>> x['A', 'B', 'C', 'D']ast.literal_eval:使用ast.literal_eval,您可以安全地评估表达式节点或包含Python表达式的字符串。提供的字符串或节点可能只包含以下Python文字结构:字符串,数字,元组,列表,dicts,布尔值和None。

冉冉说

这eval很危险 - 你不应该执行用户输入。如果你有2.6或更新,使用ast而不是eval:>>> import ast>>> ast.literal_eval('["A","B" ,"C" ," D"]')["A", "B", "C", " D"]一旦你有了,那strip就是字符串。如果您使用的是旧版本的Python,则可以使用简单的正则表达式非常接近您想要的内容:>>> x='[  "A",  " B", "C","D "]'>>> re.findall(r'"\s*([^"]*?)\s*"', x)['A', 'B', 'C', 'D']这不如ast解决方案,例如它不能正确处理字符串中的转义引号。但它很简单,不涉及危险的评估,并且如果你使用的是较旧的Python,可能对你的目的来说已经足够好了。

RISEBY

json只要存在字典化的字典列表,该模块就是更好的解决方案。该json.loads(your_data)函数可用于将其转换为列表。>>> import json>>> x = u'[ "A","B","C" , " D"]'>>> json.loads(x)[u'A', u'B', u'C', u' D']同样>>> x = u'[ "A","B","C" , {"D":"E"}]'>>> json.loads(x)[u'A', u'B', u'C', {u'D': u'E'}]

慕码人2483693

import astl = ast.literal_eval('[ "A","B","C" , " D"]')l = [i.strip() for i in l]
随时随地看视频慕课网APP

相关分类

Python
我要回答