如何使用包含字符位置的字典在Python中切片?

时间:2011-11-15 06:27:54

标签: python

我有一个包含字符串中不同字段的字符位置的字典。我想用这些信息来切割字符串。我不太确定如何最好地解释这一点,但这个例子应该说清楚:

输入:

mappings = {'name': (0,4), 'job': (4,11), 'color': (11, 15)}
data = "JohnChemistBlue"

期望的输出:

{'name': 'John', 'job': 'Chemist', 'color': 'Blue'}

请忽略作业,颜色和名称的字符长度明显不同的事实。我正在解析固定长度的字段,但为了说明的目的将其简化为此。

3 个答案:

答案 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'}