TypeError: объект 'set' не поддерживает индексирование в excel

Кто-нибудь может мне помочь? У меня такая ошибка. Я хочу закодировать и вставить все данные из wordnet в другой столбец в excel. Сначала будет прочитан документ Excel, который имеет один столбец. Затем он создаст другое excel и произведет синонимы в строке и в разных столбцах для каждого слова.

Этот код генерирует синонимы всего в одном столбце:

import nltk import xlrd import csv import xlwt import xlsxwriter from nltk.corpus import stopwords from nltk.tokenize import word_tokenize from nltk.corpus import wordnet workbook = xlrd.open_workbook('C:\\Users\\runeza\Desktop\database.xlsx') sheet_names = workbook.sheet_names() sheet = workbook.sheet_by_name(sheet_names[0]) wb = xlwt.Workbook() ws = wb.add_sheet("test") for col_idx in range(sheet.ncols): for row_idx in range(sheet.nrows): cell = sheet.cell(row_idx, col_idx).value #read content in column cell synonyms = [] for syn in wordnet.synsets(cell): for l in syn.lemmas(): #print(l.name()) synonyms.append(l.name()) a = set(synonyms) #print (a) ws.write(row_idx, col_idx,",".join(a)) wb.save("sample.xls") 

Я изменил код для правильного размещения слов в разных столбцах:

 import nltk import xlrd import csv import xlwt import xlsxwriter from nltk.corpus import stopwords from nltk.tokenize import word_tokenize from nltk.corpus import wordnet workbook = xlrd.open_workbook('C:\\Users\\runeza\Desktop\database.xlsx') sheet_names = workbook.sheet_names() sheet = workbook.sheet_by_name(sheet_names[0]) wb = xlwt.Workbook() ws = wb.add_sheet("test") for col_idx in range(sheet.ncols): for row_idx in range(sheet.nrows): cell = sheet.cell(row_idx, col_idx).value #read content in column cell synonyms = [] for syn in wordnet.synsets(cell): for l in syn.lemmas(): synonyms.append(l.name()) a = set(synonyms) #print (a) for col_idx in range(len(a)): for row_idx in range(len(a[col_idx])): ws.write(col_idx, row_idx, a[col_idx][row_idx]) wb.save("sample.xls") 

Но он дает эту ошибку:

 Traceback (most recent call last): File "C:\Users\runeza\Documents\PythonCode\outputfile.py", line 29, in <module> for row_idx in range(len(a[col_idx])): TypeError: 'set' object does not support indexing 

Вот как выглядит мой (C: \ Users \ runeza \ Desktop \ database.xlsx):

существующий лист

Это мой ожидаемый результат:

введите описание изображения здесь

Для вашей потребности, я думаю, что list будет лучшим вариантом. set objects не поддерживает индексирование (например, [0]).

Предполагая, что синонимы должны быть добавлены в ячейки прав, вы можете сделать что-то вроде:

 for col_idx in range(sheet.ncols): for row_idx in range(sheet.nrows): cell = sheet.cell(row_idx, col_idx).value #read content in column cell synonyms = [] for syn in wordnet.synsets(cell): for l in syn.lemmas(): synonyms.append(l.name()) # Making the list elements distinct. synonyms = list(set(synonyms)) for i in range(len(a)): ws.write(row_idx, col_idx+i, synonyms[i]) # Made an edit here. wb.save("sample.xls") 
  • Изменение значения ячейки в диапазоне, определяемом соответствующей ячейкой
  • Заполнение выходного вектора с помощью цикла stata
  • Удаление строк, в которых данные о пользователях перечислены в другом документе Excel
  • Перенос данных из одной книги в другую
  • VBA - интеграция с Excel + Word - циклическое кодирование кода без причины
  • У меня есть проблема с циклом с двумя пунктами одновременно в excel. Я знаю, что это должно быть легко, но у меня есть ментальный блок
  • «workbooks.sheets.add после» не работает
  • Необходимо зацикливать формулу, увеличивающуюся до последнего столбца
  • VBA Loop через узлы XML с помощью SelectSingleNode
  • Получить значение смежной ячейки, если текущая ячейка пуста в VBA
  • Как автоматически удалить полные строки при одном условии на vba?
  • Interesting Posts

    Выбор альтернативных точек и перемещение надписей выше / ниже

    Сопоставить и индексировать данные поиска из нескольких листов и суммировать их на одном рабочем столе

    Excel, если условие произвольной длины

    Обновить текущее время и дату, если значение столбца изменилось на предопределенный текст

    Каков принцип функции sumproduct в Excel?

    SQL Server Database Query с PHP

    Импортировать данные Excel в таблицу с записью, соответствующей полю excel

    Как получить номер недели из пользовательской строки даты

    Мастер создания данных SQL-разработчика пуст

    Excel. Вставка значения ячейки в строку кода (в окружении апострофий)

    Формула для извлечения 10 или 11 цифр телефонных номеров из случайной сложной тестовой строки

    Как выполнить POST с помощью multipart / form-data с помощью веб-сайта Power Query.

    Открытие листа Excel в «Excel 2003 с помощью настраиваемого расширения» с использованием WSH

    Именованные диапазоны с использованием функции index / Match для возврата значений

    Несоответствие типа аргумента ByRef, Excel VBA

    Давайте будем гением компьютера.