我有一个程序,它从文件中读取行并将它们逐行插入到 list 中(代码中没有图片)。我的目标是找到一个由 XML 格式包围的数字指示的特定起始索引,并找到一个由"/Invoice"
指示的特定结束索引。我能够使用下面创建的start_indexes
和end_indexes
函数成功地找到这些索引。
我被告知(并亲身体验过)del list
在循环中的危险,否则这个解决方案将是完美的,相反,我被建议将我想删除的所有内容添加到一个新列表中,然后我将以某种方式使用该列表删除与原始列表的差异。
鉴于上述情况,我的问题如下:什么是最好的方法来完成我试图用def deletion_list()
做的事情?
我知道lst_file
中的"lines"
是字符串,我试图将它们与索引进行比较。我不知道有什么方法可以将字符串形式的临时变量转换成索引,这样函数就可以按我预期的方式工作,或者是否有更好的方法。
start_indexes = []
for i in str_lst:
invoice_index_start = lst_file.index('<InvoiceNumber>' + i + '</InvoiceNumber>\n')
start_indexes.append(invoice_index_start)
end_indexes = []
constant = '</Invoice>\n'
for i in range(0,len(start_indexes)):
invoice_index_end = lst_file.index(constant, start_indexes[i])
end_indexes.append(invoice_index_end + 1)
result = []
def deletion_list():
for lines in lst_file:
if lst_file[] > lst_file[invoice_index_start] and lst_file[] < lst_file[invoice_index_end]
result.append(lines)
return lst_file
1条答案
按热度按时间8fsztsew1#
如果你想从一个列表中删除项目,最好的方法是循环通过原始列表的副本,你可以从原始列表中删除。
您可以使用XML解析来简化您的问题。请参考:XML parser-Real python