我从一个如下所示的列表开始:
['package1:', 'package2:', 'package1,', 'package2', '|', 'package4', 'package3:', 'package2', '|', 'package1,', 'package3']
由于我正在使用依赖项而|
意味着or
,当我找到一个时,我创建了一个子列表,以便我可以在以后处理它。
现在输出如下:
['package1:', 'package2:', 'package1,', 'package2', ['package2', 'package4'], 'package4', 'package3:', 'package2', ['package2', 'package1,'], 'package1,', 'package3']
但它看起来应该是这样的:
['package1:', 'package2:', 'package1,', ['package2', 'package4'], 'package3:', ['package2', 'package1,'], 'package3']
关键是我的代码在找到|
时已经迟到了,因为之前的元素已经添加了并且也没有跳过下一个元素,因为它是一个循环(基本上是前后的元素) |
)。
我的代码是:
for element in range(len(raw_text)):
temp_list=[]
flag = False
if raw_text[element] == '|':
temp_list.append(raw_text[element-1]), temp_list.append(raw_text[element+1])
flag = True
if raw_text[element].endswith('') and raw_text[element] != '|':
text.append(raw_text[element])
if flag == True:
text.append(temp_list)
答案 0 :(得分:1)
您可以del
使用del text[3]
来删除列表中的项目。因此,在您的if flag == True:
中添加del text[-1]
之类的内容,以删除添加的最后一个元素,然后附加新列表,然后跳过或只是不添加下一个项目。
另一种选择是改变
if flag == True:
text.append(temp_list)
到
if flag == True:
text[-1] = temp_list
然后跳过列表中的下一个元素。
答案 1 :(得分:1)
这样的东西?
text = []
i = 0
while True:
if i > len(raw_text)-2:
# No more possible |'s, so wrap things up
text.append( raw_text[-1] )
break
if raw_text[i+1] == '|':
# Add the items around the |; move past the group
text.append( [raw_text[i], raw_text[i+2]] )
i += 3
else:
# Add the current element & move on
text.append( raw_text[i] )
i += 1