解析字符串分组(Python)

解析字符串分组(Python),python,Python,我有一个字符串,看起来像这样: [["Name1","ID1","DDY1", "CALL1", "WHEN1"], ["Name2","ID2","DDY2", "CALL2", "WHEN2"],...]; 此字符串取自一个网站。可以有任意数量的分组。我如何解析这个字符串并只打印每个分组的名称变量?希望我理解得很好 >>> import json >>> a = json.loads('[["Name1","ID1","DDY1", "CALL1", "

我有一个字符串,看起来像这样:

[["Name1","ID1","DDY1", "CALL1", "WHEN1"], ["Name2","ID2","DDY2", "CALL2", "WHEN2"],...];

此字符串取自一个网站。可以有任意数量的分组。我如何解析这个字符串并只打印每个分组的名称变量?

希望我理解得很好

>>> import json
>>> a = json.loads('[["Name1","ID1","DDY1", "CALL1", "WHEN1"], ["Name2","ID2","DDY2", "CALL2", "WHEN2"]]')
>>> [x[0] for x in a]
[u'Name1', u'Name2']
>>> 
感谢@stephan用ast.literal\u eval为我指明了正确的方向。如文件所述:

安全地计算表达式节点或 包含Python的字符串 表情。字符串或节点 所提供的信息可能仅包括以下内容: 以下Python文本结构: 字符串、数字、元组、列表、, 口授、布尔语和无语

这可用于安全评估 包含Python表达式的字符串 来自不受信任的来源,但没有 需要自己解析这些值


注意:这是Python 2.6中的新功能。

然后需要显示完整的字符串。它可能是一个破损的json或其他完全不同的东西。您可能需要在最后一个分组后去掉一个尾随逗号。将字符串放入jslint中-它会告诉您出了什么问题。然后按摩绳子,使其工作,并执行上述操作。您应该避免对从其他网站获取的字符串使用eval。此外,传递给json.loads的字符串应该是unicode对象。检查,或从utf-8或任何编码进行适当解码。第1行字符194处出现问题:应为“(结束)”,而应为“;”。我是把[u'Name1',u'Name2']也放在我的IDE中还是只放在shell中?建议
ast.literal\u eval()
而不是
eval
。修复了,谢谢。我知道它就在附近,我正在寻找它。ftw,不客气。另一个小小的改进:
str
是一个内置类,因此我不会在列表中使用这个名称。
import ast
y = ast.literal_eval(input)
[x[0] for x in y]