我正在尝试将所有已处理的列表(删除空列表项、删除所有\n
和\r
等)添加到名为allOrders
的空列表中。问题是代码执行后allOrders
只包含作为最后一个附加的列表。你知道吗
import os
if orderFilesListCount >= 1:
for singleOrderFile in orderFilesList: # does the following to all Orders in OrderFileList
orderContents = list() # creates empty list
dataRemoveSpaces = list() # creates empty list
allOrders = list() # creates empty list
f = open(os.path.join(directory, singleOrderFile), "rb") # opens each order file
data = f.read().decode("utf16") # decodes data from file
dataRemoveLine = data.rstrip().split('\n') # removes new lines
dataRemoveTabs = [s.strip('\r') for s in dataRemoveLine] # removes all /r from list items
dataRemoveEmpty = list(filter(None, dataRemoveTabs)) # removes all empty list items
for element in dataRemoveEmpty: # following code trimms all elements in list
element = element.strip()
dataRemoveSpaces.append(element) # add trimmed elements back to list
print(dataRemoveSpaces) # my verification if the list was sucessfuly processed
allOrders.append(dataRemoveSpaces) # appends allOrders list with processed list
我知道“处理”每一个单独的列表并不是代码的问题(多亏了lastprint
-它看起来和它应该的完全一样)。你知道吗
这里有什么问题?我见过几个线程处理类似的问题,但不能将它们的解决方案应用到我的。你知道吗
每次迭代都要重新创建
allOrders
:allOrders = list()#creates empty list
所以你把它擦掉。在if语句中,将此行移出循环:
或者甚至是if语句:
所以你不会不断地抹去它。你知道吗
放置线:
在for循环之外,因为您迭代的每个步骤都在创建一个空列表,因此只有最后一个列表
相关问题 更多 >
编程相关推荐