1 回答
TA贡献2065条经验 获得超13个赞
我认为你想要做的是这样的:
from ast import literal_eval
with open ("numbers.txt") as inFile:
lines = inFile.readlines()
for i, line in enumerate(lines,1): #start with 1 because excel row start with index = 1
line_number = literal_eval(line)
if 1800 in line_number :
cell1800_a = sheet.cell(row=i,column=27)
cell1800_a.value = number
cell1800_b = sheet.cell(row=i,column=29)
cell1800_b.value = number
if 2100 in line_number:
cell2100_a = sheet.cell(row=i,column=25)
cell2100_a.value = number
if 2600 in line_number :
cell2600 = sheet.cell(row=i,column=30)
cell2600.value = number
if 1500 in line_number :
cell1500 = sheet.cell(row=i,column=34)
cell1500.value = number
if 800 in line_number :
cell800 = sheet.cell(row=i,column=33)
cell800.value = number
if 3700 in line_number :
cell3700 = sheet.cell(row=i,column=40)
cell3700.value = number
我改变了什么:
我将输入字符串评估为一个元组。原因是,例如,如果您在字符串中查找字符串 800,
(1800, 2100, 2600, 1500, 900, 3700)
您会找到匹配项,因为 1800 中有 800。因此,为了避免这种情况,我对其进行了评估,现在我正在研究一个正确数字的元组,因此只有当数字 800 在元组中时它才会匹配,而在上面的示例中不是这种情况。您有 2 个 for 循环,而第 2 个 for 循环是不必要的。我认为您希望 txt 文件的每一行都与您的 excel 文件中的行相对应。但是使用您的第二个 for 循环,您会覆盖之前发生的每个匹配项,在最坏的情况下,您将拥有一个完整的 excel,并且仅针对最后一行评估相同的值。基本上,您只需为每行写入一次值,而不是多次。
else
部分是不必要的,pass
我删除了它。
添加回答
举报