4 回答
TA贡献1848条经验 获得超2个赞
>>> 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,您可以安全地评估表达式节点或包含Python表达式的字符串。提供的字符串或节点可能只包含以下Python文字结构:字符串,数字,元组,列表,dicts,布尔值和None。
TA贡献1877条经验 获得超1个赞
这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,可能对你的目的来说已经足够好了。
TA贡献1860条经验 获得超9个赞
import ast
l = ast.literal_eval('[ "A","B","C" , " D"]')
l = [i.strip() for i in l]
添加回答
举报