我正在尝试从csv文件中读取一些数据。问题是仅当print(a)在“ if”块下时才显示该列表。 否则,它只会显示列表中的最后一项
def products_per_command():
a=[]
with open('commande_client.csv') as csv_file:
Numero_commande=input ('entrez le numero de la commande que vous cherchez :' )
csv_reader = csv.reader(csv_file, delimiter=';')
for row in csv_reader:
for i in row:
if (i==Numero_commande):
a=[row[2],row[4]]
print(a)
这里的输出是:
entrez le numero de la commande que vous cherchez :1
['af23', '150']
['ab12', '500']
['ab12', '214']
['af12', '21']
['ab12', '526']
['ab12', '223']
这就是我真正想要的,但是当我将“ print(a)”放在函数的末尾(不在任何循环或“ if”下)时,它仅显示最后一项:
['ab12', '223']
答案 0 :(得分:1)
使用list.append
def products_per_command():
a=[]
with open('commande_client.csv') as csv_file:
Numero_commande=input ('entrez le numero de la commande que vous cherchez :' )
csv_reader = csv.reader(csv_file, delimiter=';')
for row in csv_reader:
for i in row:
if (i==Numero_commande):
a.append([row[2],row[4]])
print(a)
答案 1 :(得分:1)
if (i==Numero_commande):
a=[row[2],row[4]]
print(a)
由于此部分位于循环内,因此每次迭代时都要将新值设置为a
。如果在循环中打印它,则a
会在每次迭代时打印其当前值,从而在输出中提供整个预期列表。请注意,组合列表永远不会一次保存在内存中。
但是,如果在循环外打印a
,则a
将具有您在上次迭代中为其分配的值。
就像其他人所说的那样,您要使用a.append()
而不是a = ...
,因为这会添加到列表中而不是覆盖它。