Member 12973215 Ответов: 0

Как пропустить пустые ячейки с помощью openpyxl?


У меня есть лист excel с городами (в алфавитном порядке) и двумя столбцами соответствующих организаций, и я пытаюсь создать новый основной список в python с подсписками, содержащими все организации в определенном городе. Тем не менее, когда я тестирую этот код, я получаю подсписки, которые содержат "нет", хотя я перепробовал все, что мог придумать, чтобы отфильтровать нетипы. По какой-то причине мне кажется, что некоторые циклы в моем коде никогда не выполняются.

В конечном счете, я планирую использовать fuzzywuzzy, чтобы использовать нечеткое сопоставление для оценки количества уникальных организаций в каждом городе (кто бы ни вошел в них, сделал ужасную работу, поэтому я просто пытаюсь получить оценку).

Если вы можете помочь, спасибо!

Что я уже пробовал:

from openpyxl import load_workbook

wb = load_workbook(filename = '/Users/Me/Downloads/example.xlsx', read_only = True, data_only = True)
ws = wb['Sheet1']
masterList = []
nextList = []


for i in range(2, ws.max_row):
    f = i + 1
    try:
    #I was having lots of problems with errors, and this seemed to solve that. 
        if (str((ws.cell(row = i, column = 1).value).lower())) == (str((ws. cell(row = f, column = 1).value).lower())):
            #checking if it's still the same city
            if (ws.cell(row = i, column = 2).value) != None and str((ws.cell(row = i, column = 2).value)) != "None" :
                #Making sure there are no nonetypes
                try:
                    nextList.append(str(ws.cell(row = i, column = 2).value))
                except TypeError or AttributeError or ValueError:
                    continue
            elif (ws.cell(row = i, column = 3).value) != None and str((ws.cell(row = i, column = 3).value)) != "None" :
                #There are two columns with organizations 
                try:
                    nextList.append(str(ws.cell(row = i, column = 3).value))
                except TypeError or AttributeError or ValueError:
                    continue
            else:
                #in testing I realized that this part of the loop never ran, though it should have
                continue
        else:
            try:
                if (ws.cell(row = i, column = 2).value) != None:
                    nextList.append(str(ws.cell(row = i, column = 2).value))
                    print("C")
                elif (ws.cell(row = i, column = 3).value) != None:
                    nextList.append(str(ws.cell(row = i, column = 2).value))
                    print("D")
                else:
                    continue
            except TypeError or AttributeError or ValueError:
                continue
            if nextList!= []:
                masterList.append(list(set(nextList)))
                nextList = []
            else:
                continue
    except AttributeError:
        continue

print(masterList)

Richard MacCutchan

Попробуйте проверить, нет ли их в начале каждого цикла, чтобы сразу же исключить все такие строки, которые вы найдете.

0 Ответов