我有一个程序需要读取一个名为PartsList.csv
的CSV文件。它查看第一列,并将其与运行此代码段之前创建的字典进行比较,如果第一列与之匹配,它将从被比较的键值对中获取值,并将其用作键在字典catd{}
中,并将值设置为空元组。然后,它获取空的元组,将其转换为变量holder
的列表,第二列中的值附加到列表中,并转换回元组作为上述键的值。但是,我遇到的问题是,在迭代一次之后,它完全忽略了内部for循环。它生成了我需要的键,但是由于内部的for循环被忽略,因此它不会为其生成值。我不知道问题出在什么地方,所以我们将不胜感激。
以下是相关代码:
md = {} # This is the mentioned dictionary. The values share names with the first column of the CSV.
catd = {}
itemd = {}
holder = ()
with open('PartsList.csv') as csv_file:
mct = 1
act = 1
csv_reader = csv.reader(csv_file, delimiter=',')
print(len(md))
for x in range(0, len(md)):
line_count = 0
catd[str(md["MCat{0}".format(mct)])] = ()
for row in csv_reader:
if md['MCat{0}'.format(mct)] == row[0]:
holder = list(catd[str(md["MCat{0}".format(mct)])])
holder.append(str(row[1]))
catd[str(md['MCat{0}'.format(mct)])] = tuple(holder)
print(catd)
print(row[1])
else:
line_count += 1
holder = ()
mct += 1
print(x)
print(catd)
谢谢您的帮助!
答案 0 :(得分:0)
问题已经解决,如@ 0x5453所述,使用csv_file.seek(0)
将起始点重置为开始,从而停止了迭代器csv_file
为空的问题。