嗨我在python脚本中有一个字符串
cp_map = "Valid:\nOP_1\nOP_2\nOP_3\nInvalid:\nOP_4\nOP_5\nUnused:\nOP_6\nOP_7"
在此缓冲区中,我想在关键字“有效”之后分隔关键字之后的参数,例如OP_1,OP_2,OP_3。随后的每组参数必须保存在单独的列表中,例如, OP_4,OP_5必须在另一个列表中,OP_6,OP_7必须在另一个列表中。因此,我需要分离列表并为有效,无效或未使用的操作创建三个单独的列表
我已将字符串转换为列表,方法是将其分隔为'\ n',如
cp_map.split('\n')
所以我得到了清单
cp_map = [u'Valid:', u'OP_1', u'OP_2', u'OP_3', u'Invalids:', u'OP_4'..............]
请帮我创建多个有效,无效和未使用的操作列表。
答案 0 :(得分:2)
您可以遍历列表并填写所需的子列表,或使用list.index查找关键字“Valid”,“Invalid”,“Unused”的索引,并使用切片表示法来拆分列表:
cp_map = [u'Valid:', u'OP_1', u'OP_2', u'OP_3', u'Invalid', u'OP_4', 'Unused', 'OP_n']
v_map = cp_map[1 : cp_map.index("Invalid")]
i_map = cp_map[cp_map.index("Invalid") + 1 : cp_map.index("Unused")]
u_map = cp_map[cp_map.index("Unused") + 1 : ]
print(v_map, i_map, u_map)
答案 1 :(得分:1)
如果您可以确定结构和关键字:
token = '!*!'
cp_map = "Valid:\nOP_1\nOP_2\nOP_3\nInvalid:\nOP_4\nOP_5\nUnused:\nOP_6\nOP_7"
cp_map = cp_map.replace(':\n',':')
cp_map = cp_map.replace('\nInvalid', token + 'Invalid')
cp_map = cp_map.replace('\nUnused', token + 'Unused')
cp_map = cp_map.replace('\n',',')
cp_map = cp_map.split(token)
y = {key:op.split(',') for key, op in (cp.split(':') for cp in cp_map)}
valid = y['Valid']
unused = y['Unused']
invalid = y['Invalid']
>>> y
{'Unused': ['OP_6', 'OP_7'], 'Valid': ['OP_1', 'OP_2', 'OP_3'], 'Invalid': ['OP_4', 'OP_5']}
>>>
答案 2 :(得分:0)
这是一种方法:
cp_map = "Valid:\nOP_1\nOP_2\nOP_3\nInvalid:\nOP_4\nOP_5\nUnused:\nOP_6\nOP_7"
one_list = cp_map.split('\n')
sub_list, multi_lists = [], []
for item in one_list:
if 'unused' in item.lower() or 'valid' in item.lower() or 'invalid' in item.lower():
if sub_list:
multi_lists.append(sub_list)
sub_list = []
sub_list.append(item)
multi_lists.append(sub_list)
print multi_lists
打印
[['Valid:', 'OP_1', 'OP_2', 'OP_3'], ['Invalid:', 'OP_4', 'OP_5'], ['Unused:', 'OP_6', 'OP_7']]