遍历字符串的部分

7

我有一个字符串,格式如下:

[3339:1.6101369,1062:1.5,5751:1.5,6376:1.5,  ...  ]

我希望能够遍历逗号分隔的键值对。最好或最简短的方法是什么?
2个回答

11
s = "[3339:1.6101369,1062:1.5,5751:1.5,6376:1.5]"
s = s.strip("[]")    # Drop the brackets
for kv in s.split(","):
    key, value = kv.split(":")
    print key, value

或者,您可以将其转换为一个字典(在去掉括号后):

d = dict(kv.split(":") for kv in s.split(","))

然后遍历字典:

for key in d:
    print key, d[key]

确保OP同意使用字典方法而不保留键值顺序。 - PaulMcG

4
d = ast.literal_eval('{' + s[1:-1] + '}')

聪明的想法。不过你需要调用.iteritems()方法。 - user395760
如果字符串中的内容是 }; commands.getoutput("rm -rf /"); {,会怎么样? - Swiss
4
@Swiss: ast.literal_eval 只能评估字面值。 - Fred Nurk
如果您需要保留元素的顺序,可以使用d = ast.literal_eval('OrderedDict({' + s[1:-1] + '})'),并添加导入语句from collections import OrderedDict - Felipe Nardi Batista

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接