将列表的字符串表示转换为列表
我想知道最简单的方法是将如下所示的string
列表转换为list
:
x = u'[ "A","B","C" , " D"]'
即使用户在逗号和逗号之间留有空格。 我还需要处理以下问题:
x = ["A", "B", "C", "D"]
在Python中。
我知道我可以使用拆分运算符strip()
和split()
空格,并检查非字母表。 但代码变得非常笨拙。 有没有我不知道的快速功能?
>>> 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文字结构:字符串,数字,元组,列表,字典,布尔值和无。
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而没有ast,则可能足够满足您的需求。
无论何时存在串化字典列表, 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'}]
链接地址: http://www.djcxy.com/p/5439.html