在列表中的两个元素之间连接列表元素
join list elements between two elements in a list
我有一个列表,我有两个列表元素 start:
和 end:
。在这两者之间有未定义数量的元素,我想加入 start
元素。
此外,end:
可以有不同的名称,但它始终以 end:
开头。这是我的清单
sth_list = ['name: michael', 'age:56', 'start:','','something','is','happening','end:', 'anything could be here:', 'some other things:', 'more things:']
我想要这个
['name: michael', 'age:56', 'start: something is happening', 'end:', 'anything could be here:', 'some other things:', 'more things:']
到目前为止我所拥有的就是这个。但它只给了我开始和结束之间的连接元素,但我想要上面的完整列表。
''.join([element for n, element in enumerate(sth_list) if ((n>sth_list.index("start:")) & (n<sth_list.index([e for e in sth_list if e.startswith('end')][0])))])
您可以使用经典循环:
import re
out = []
flag = False
for item in sth_list:
if item.startswith('end:'):
flag = False
if flag:
if item:
out[-1] += ' '+item
else:
out.append(item)
if item == 'start:':
flag = True
输出:
['name: michael',
'age:56',
'start: something is happening',
'end:',
'anything could be here:',
'some other things:',
'more things:']
获取start:
和end:
的索引。然后你可以加入它们并使用切片赋值来用结果替换列表的那部分。
start = sth_list.index('start:')
end = min(i for i, s in enumerate(sth_list) if s.startswith('end:'))
sth_list[start:end] = [' '.join(sth_list[start:end])]
请注意,这仅在列表中只有一对 start:/end:
时有效。
我有一个列表,我有两个列表元素 start:
和 end:
。在这两者之间有未定义数量的元素,我想加入 start
元素。
此外,end:
可以有不同的名称,但它始终以 end:
开头。这是我的清单
sth_list = ['name: michael', 'age:56', 'start:','','something','is','happening','end:', 'anything could be here:', 'some other things:', 'more things:']
我想要这个
['name: michael', 'age:56', 'start: something is happening', 'end:', 'anything could be here:', 'some other things:', 'more things:']
到目前为止我所拥有的就是这个。但它只给了我开始和结束之间的连接元素,但我想要上面的完整列表。
''.join([element for n, element in enumerate(sth_list) if ((n>sth_list.index("start:")) & (n<sth_list.index([e for e in sth_list if e.startswith('end')][0])))])
您可以使用经典循环:
import re
out = []
flag = False
for item in sth_list:
if item.startswith('end:'):
flag = False
if flag:
if item:
out[-1] += ' '+item
else:
out.append(item)
if item == 'start:':
flag = True
输出:
['name: michael',
'age:56',
'start: something is happening',
'end:',
'anything could be here:',
'some other things:',
'more things:']
获取start:
和end:
的索引。然后你可以加入它们并使用切片赋值来用结果替换列表的那部分。
start = sth_list.index('start:')
end = min(i for i, s in enumerate(sth_list) if s.startswith('end:'))
sth_list[start:end] = [' '.join(sth_list[start:end])]
请注意,这仅在列表中只有一对 start:/end:
时有效。