【问题标题】:Iterate through parts of a string遍历字符串的各个部分
【发布时间】:2011-06-27 05:52:02
【问题描述】:

表单中有字符串

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

我想遍历逗号分隔的键值对。最好或最短的方法是什么?

【问题讨论】:

    标签: python string iterator string-conversion


    【解决方案1】:
    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 没有使用 dict 方法保留键值顺序。
    【解决方案2】:
    d = ast.literal_eval('{' + s[1:-1] + '}')
    

    【讨论】:

    • 聪明的主意。不过,您需要致电 .iteritems()
    • 如果该字符串中的 ... 是 }; commands.getoutput("rm -rf /"); {
    • @Swiss: ast.literal_eval 只评估文字。
    • 如果需要保留元素的顺序,可以使用d = ast.literal_eval('OrderedDict({' + s[1:-1] + '})')加上导入from collections import OrderedDict
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 2021-06-30
    • 2021-11-03
    • 2013-01-18
    • 1970-01-01
    • 2018-05-15
    相关资源
    最近更新 更多