我有一个包含字符串中不同字段的字符位置的字典。我想用这些信息来切割字符串。我不太确定如何最好地解释这一点,但这个例子应该说清楚:
输入:
mappings = {'name': (0,4), 'job': (4,11), 'color': (11, 15)}
data = "JohnChemistBlue"
期望的输出:
{'name': 'John', 'job': 'Chemist', 'color': 'Blue'}
请忽略作业,颜色和名称的字符长度明显不同的事实。我正在解析固定长度的字段,但为了说明的目的将其简化为此。
答案 0 :(得分:10)
>>> dict((f, data[slice(*p)]) for f, p in mappings.iteritems())
{'color': 'Blue', 'job': 'Chemist', 'name': 'John'}
答案 1 :(得分:4)
dict([(name, data[range[0]:range[1]]) for name, range in mappings.iteritems()])
答案 2 :(得分:3)
>>> dict([(k, data[ mappings[k][0]:mappings[k][1] ]) for k in mappings])
{'color': 'Blue', 'job': 'Chemist', 'name': 'John'}
或使用生成器而不是列表(可能更高效):
>>> dict(((k, data[ mappings[k][0]:mappings[k][1] ]) for k in mappings))
{'color': 'Blue', 'job': 'Chemist', 'name': 'John'}