Python 索引器:列表索引超出范围创建和打开xlsx

Python 索引器:列表索引超出范围创建和打开xlsx,python,xlsx,Python,Xlsx,我想用python编写一个程序,创建一个xlsx文件,每个字母都有一张表。我想读取150个文件,这些文件的编号和名称分别为“:”,例如每行“03005:stackoverflow”,并将每个编号及其名称放在以名称的第一个字母开头的表格中 当我执行我的程序时,它会给我这个错误,我不知道如何修复它。不是每次我执行它时,它都会在同一个动作中失败 import openpyxl import tkinter, re import xlwt import os.path def read_file(nam

我想用python编写一个程序,创建一个xlsx文件,每个字母都有一张表。我想读取150个文件,这些文件的编号和名称分别为“:”,例如每行“03005:stackoverflow”,并将每个编号及其名称放在以名称的第一个字母开头的表格中

当我执行我的程序时,它会给我这个错误,我不知道如何修复它。不是每次我执行它时,它都会在同一个动作中失败

import openpyxl
import tkinter, re
import xlwt
import os.path
def read_file(name,e,arrayPositions,fileName):
    f = open(name,"r",encoding="utf8")
    print("El fichero que estamos leyendo es "+name)
    for line in f.readlines():
            words = line.split(":")
            if (words[1])[0] is None:
                    if (words[1])[0] == "A":
                            sheet = e.get_sheet("A")
                            sheet.write(arrayPositions[0],0,(words[1])[:-1])
                            sheet.write(arrayPositions[0],1,words[0])
                            arrayPositions[0]=arrayPositions[0]+1
                    if (words[1])[0] == "B":
                            sheet = e.get_sheet("B")
                            sheet.write(arrayPositions[1],0,(words[1])[:-1])
                            sheet.write(arrayPositions[1],1,words[0])
                            arrayPositions[1]=arrayPositions[1]+1
                    if (words[1])[0] == "C":
                            sheet = e.get_sheet("C")
                            sheet.write(arrayPositions[2],0,(words[1])[:-1])
                            sheet.write(arrayPositions[2],1,words[0])
                            arrayPositions[2]=arrayPositions[2]+1
                    if (words[1])[0] == "D":
                            sheet = e.get_sheet("D")
                            sheet.write(arrayPositions[3],0,(words[1])[:-1])
                            sheet.write(arrayPositions[3],1,words[0])
                            arrayPositions[3]=arrayPositions[3]+1
                    if (words[1])[0] == "E":
                            sheet = e.get_sheet("E")
                            sheet.write(arrayPositions[4],0,(words[1])[:-1])
                            sheet.write(arrayPositions[4],1,words[0])
                            arrayPositions[4]=arrayPositions[4]+1
                    if (words[1])[0] == "F":
                            sheet = e.get_sheet("F")
                            sheet.write(arrayPositions[5],0,(words[1])[:-1])
                            sheet.write(arrayPositions[5],1,words[0])
                            arrayPositions[5]=arrayPositions[5]+1
                    if (words[1])[0] == "G":
                            sheet = e.get_sheet("G")
                            sheet.write(arrayPositions[6],0,(words[1])[:-1])
                            sheet.write(arrayPositions[6],1,words[0])
                            arrayPositions[6]=arrayPositions[6]+1
                    if (words[1])[0] == "H":
                            sheet = e.get_sheet("H")
                            sheet.write(arrayPositions[7],0,(words[1])[:-1])
                            sheet.write(arrayPositions[7],1,words[0])
                            arrayPositions[7]=arrayPositions[7]+1
                    if (words[1])[0] == "I":
                            sheet = e.get_sheet("I")
                            sheet.write(arrayPositions[8],0,(words[1])[:-1])
                            sheet.write(arrayPositions[8],1,words[0])
                            arrayPositions[8]=arrayPositions[8]+1
                    if (words[1])[0] == "J":
                            sheet = e.get_sheet("J")
                            sheet.write(arrayPositions[9],0,(words[1])[:-1])
                            sheet.write(arrayPositions[9],1,words[0])
                            arrayPositions[9]=arrayPositions[9]+1
                    if (words[1])[0] == "K":
                            sheet = e.get_sheet("K")
                            sheet.write(arrayPositions[10],0,(words[1])[:-1])
                            sheet.write(arrayPositions[10],1,words[0])
                            arrayPositions[10]=arrayPositions[10]+1
                    if (words[1])[0] == "L":
                            sheet = e.get_sheet("L")
                            sheet.write(arrayPositions[11],0,(words[1])[:-1])
                            sheet.write(arrayPositions[11],1,words[0])
                            arrayPositions[11]=arrayPositions[11]+1
                    if (words[1])[0] == "M":
                            sheet = e.get_sheet("M")
                            sheet.write(arrayPositions[12],0,(words[1])[:-1])
                            sheet.write(arrayPositions[12],1,words[0])
                            arrayPositions[12]=arrayPositions[12]+1
                    if (words[1])[0] == "N":
                            sheet = e.get_sheet("N")
                            sheet.write(arrayPositions[13],0,(words[1])[:-1])
                            sheet.write(arrayPositions[13],1,words[0])
                            arrayPositions[13]=arrayPositions[13]+1
                    if (words[1])[0] == "Ñ":
                            sheet = e.get_sheet("Ñ")
                            sheet.write(arrayPositions[14],0,(words[1])[:-1])
                            sheet.write(arrayPositions[14],1,words[0])
                            arrayPositions[14]=arrayPositions[14]+1
                    if (words[1])[0] == "O":
                            sheet = e.get_sheet("O")
                            sheet.write(arrayPositions[15],0,(words[1])[:-1])
                            sheet.write(arrayPositions[15],1,words[0])
                            arrayPositions[15]=arrayPositions[15]+1
                    if (words[1])[0] == "P":
                            sheet = e.get_sheet("P")
                            sheet.write(arrayPositions[16],0,(words[1])[:-1])
                            sheet.write(arrayPositions[16],1,words[0])
                            arrayPositions[16]=arrayPositions[16]+1
                    if (words[1])[0] == "Q":
                            sheet = e.get_sheet("Q")
                            sheet.write(arrayPositions[17],0,(words[1])[:-1])
                            sheet.write(arrayPositions[17],1,words[0])
                            arrayPositions[17]=arrayPositions[17]+1
                    if (words[1])[0] == "R":
                            sheet = e.get_sheet("R")
                            sheet.write(arrayPositions[18],0,(words[1])[:-1])
                            sheet.write(arrayPositions[18],1,words[0])
                            arrayPositions[18]=arrayPositions[18]+1
                    if (words[1])[0] == "S":
                            sheet = e.get_sheet("S")
                            sheet.write(arrayPositions[19],0,(words[1])[:-1])
                            sheet.write(arrayPositions[19],1,words[0])
                            arrayPositions[19]=arrayPositions[19]+1
                    if (words[1])[0] == "T":
                            sheet = e.get_sheet("T")
                            sheet.write(arrayPositions[20],0,(words[1])[:-1])
                            sheet.write(arrayPositions[20],1,words[0])
                            arrayPositions[20]=arrayPositions[20]+1
                    if (words[1])[0] == "U":
                            sheet = e.get_sheet("U")
                            sheet.write(arrayPositions[21],0,(words[1])[:-1])
                            sheet.write(arrayPositions[21],1,words[0])
                            arrayPositions[21]=arrayPositions[21]+1
                    if (words[1])[0] == "V":
                            sheet = e.get_sheet("V")
                            sheet.write(arrayPositions[22],0,(words[1])[:-1])
                            sheet.write(arrayPositions[22],1,words[0])
                            arrayPositions[22]=arrayPositions[22]+1
                    if (words[1])[0] == "W":
                            sheet = e.get_sheet("W")
                            sheet.write(arrayPositions[23],0,(words[1])[:-1])
                            sheet.write(arrayPositions[23],1,words[0])
                            arrayPositions[23]=arrayPositions[23]+1
                    if (words[1])[0] == "Y":
                            sheet = e.get_sheet("Y")
                            sheet.write(arrayPositions[24],0,(words[1])[:-1])
                            sheet.write(arrayPositions[24],1,words[0])
                            arrayPositions[24]=arrayPositions[24]+1
                    if (words[1])[0] == "X":
                            sheet = e.get_sheet("X")
                            sheet.write(arrayPositions[25],0,(words[1])[:-1])
                            sheet.write(arrayPositions[25],1,words[0])
                            arrayPositions[25]=arrayPositions[25]+1
                    if (words[1])[0] == "Z":
                            sheet = e.get_sheet("Z")
                            sheet.write(arrayPositions[26],0,(words[1])[:-1])
                            sheet.write(arrayPositions[26],1,words[0])
                            arrayPositions[26]=arrayPositions[26]+1
   e.save(fileName)
   f.close()
   return arrayPositions


fileName = "aCode.xlsx"
e = xlwt.Workbook(fileName)
e.add_sheet("A")
e.add_sheet("B")
e.add_sheet("C")
e.add_sheet("D")
e.add_sheet("E")
e.add_sheet("F")
e.add_sheet("G")
e.add_sheet("H")
e.add_sheet("I")
e.add_sheet("J")
e.add_sheet("K")
e.add_sheet("L")
e.add_sheet("M")
e.add_sheet("N")
e.add_sheet("Ñ")
e.add_sheet("O")
e.add_sheet("P")
e.add_sheet("Q")
e.add_sheet("R")
e.add_sheet("S")
e.add_sheet("T")
e.add_sheet("U")
e.add_sheet("V")
e.add_sheet("W")
e.add_sheet("X")
e.add_sheet("Y")
e.add_sheet("Z")
arrayPositions = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

for x in range(1,150):
        arrayPositions = read_file(str(x)+".txt",e,arrayPositions, fileName)
你有

如果(单词[1])[0]为无:

然后将
单词[1][0]
的值与某些字符进行比较

你是想写信吗

如果(单词[1])[0]不是无:

因此,如果这些值不是非类型,它将转到内部if,并将值与字符进行比较

更新

当然,这并不能解决您的问题,就好像列表单词没有元素[1]或者单词[1][0]没有元素一样,它会给您带来索引错误。有许多方法可以查看是否存在具有该索引的列表。但对您来说,最简单的方法是将
if(单词[1])[0]更改为None:
一起尝试:
并在if语句之后写入
除了:
。例如:

if (words[1])[0] is None:
                if (words[1])[0] == "A":
                        sheet = e.get_sheet("A")
                        sheet.write(arrayPositions[0],0,(words[1])[:-1])
                        sheet.write(arrayPositions[0],1,words[0])
                        arrayPositions[0]=arrayPositions[0]+1
                **all other ifs

你有

如果(单词[1])[0]为无:

然后将
单词[1][0]
的值与某些字符进行比较

你是想写信吗

如果(单词[1])[0]不是无:

因此,如果这些值不是非类型,它将转到内部if,并将值与字符进行比较

更新

当然,这并不能解决您的问题,就好像列表单词没有元素[1]或者单词[1][0]没有元素一样,它会给您带来索引错误。有许多方法可以查看是否存在具有该索引的列表。但对您来说,最简单的方法是将
if(单词[1])[0]更改为None:
一起尝试:
并在if语句之后写入
除了:
。例如:

if (words[1])[0] is None:
                if (words[1])[0] == "A":
                        sheet = e.get_sheet("A")
                        sheet.write(arrayPositions[0],0,(words[1])[:-1])
                        sheet.write(arrayPositions[0],1,words[0])
                        arrayPositions[0]=arrayPositions[0]+1
                **all other ifs


您是否考虑过类似于
sheet=e.get_sheet(单词[1][0])
?@klauds。是的,这样做的问题是,不知道如何指示正确的位置,因为每一个字母,它指的是不同的位置。请包含实际的错误,并且请考虑创建一个关注最小部分的位置。我猜如果你有26个字母的问题,你可能也有三到四个字母的问题。问题不在一个特定的字母上出现,也不在所有的字母上出现,似乎有点随机。这就是我发布所有代码的原因。您是否考虑过类似于
sheet=e.get_sheet(words[1][0])
?@klauds的东西。是的,这样做的问题是,不知道如何指示正确的位置,因为每一个字母,它指的是不同的位置。请包含实际的错误,并且请考虑创建一个关注最小部分的位置。我猜如果你有26个字母的问题,你可能也有三到四个字母的问题。问题不在一个特定的字母上出现,也不在所有的字母上出现,似乎有点随机。这就是为什么我发布了所有的代码。当然!我想这么做。但是我添加了“不”,它仍然会给我同样的错误。当然!我想这么做。但是我添加了not,它仍然会给我同样的错误。