删除列表前后的元素
Removing elements before and after a list
我从一个看起来像这样的列表开始:
['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)
您可以使用 del
这样的东西 del text[3]
从列表中删除一个项目。因此,在您的 if flag == True:
中,只需添加 del text[-1]
之类的内容即可删除最后添加的元素,然后追加您的新列表,然后跳过或不添加下一个项目。
另一种选择是更改
if flag == True:
text.append(temp_list)
到
if flag == True:
text[-1] = temp_list
然后跳过列表中的下一个元素。
是这样的吗?
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
我从一个看起来像这样的列表开始:
['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)
您可以使用 del
这样的东西 del text[3]
从列表中删除一个项目。因此,在您的 if flag == True:
中,只需添加 del text[-1]
之类的内容即可删除最后添加的元素,然后追加您的新列表,然后跳过或不添加下一个项目。
另一种选择是更改
if flag == True:
text.append(temp_list)
到
if flag == True:
text[-1] = temp_list
然后跳过列表中的下一个元素。
是这样的吗?
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