我有一个excel文件,其中包含一些个人信息。我试图获取excel文件中每一行的这些信息,并进行各种排序和重新分配。我的第一步是尝试从工作簿中提取信息并将其存储在列表字典中。我的程序以无限循环结束。我的错是什么?
这是我试过的代码:
import openpyxl
file = openpyxl.load_workbook("peopleList.xlsx")
sheet = file.active
person = {}
people = []
reader = 1
while sheet["A" + str(reader)].value != "":
person["name"] = sheet["A" + str(reader)].value
person["gender"] = sheet["B" + str(reader)].value
person["school"] = sheet["C" + str(reader)].value
person["ch1"] = sheet["D" + str(reader)].value
person["ch2"] = sheet["E" + str(reader)].value
person["ch3"] = sheet["F" + str(reader)].value
people.append(person)
person = {}
print(people)
你的情况有误。在while语句中,您只检查“A1”中是否有值。因为总有一个值,所以循环无限。这有效
import openpyxl
file = openpyxl.load_workbook('peopleList.xlsx')
sheet = file.active
person = {}
people = []
for reader in np.arange(1,len(sheet['A'])+1):
person["name"] = sheet["A" + str(reader)].value
person["gender"] = sheet["B" + str(reader)].value
person["school"] = sheet["C" + str(reader)].value
person["ch1"] = sheet["D" + str(reader)].value
person["ch2"] = sheet["E" + str(reader)].value
person["ch3"] = sheet["F" + str(reader)].value
people.append(person)
person = {}
print(people)
这是重要的一句话:
for reader in np.arange(1,len(sheet['A'])+1):
它也可以使用while语句来完成,但是你在for循环中获得无限循环的可能性要小得多,所以在很多情况下我发现它们更明确。我在这里做的是计算列A的长度(假设它与其他列相同,然后通过使用[1,2,3,...,len(A)]
创建该列表来交换数字列表np.arange(len(A))
。