Python在Excel中input和输出数据

我在编程和Python方面真的很新奇。 我想问一些新手问题。 我有一个excel文件,在一列中有文字。 我想读取这些词在另一个excel文件中生成同义词。 下面是我想从excel中读取的单词:

| A | B | C 1 | mankind | liquid | air 2 | professor | steam | haze 3 | name | kind | awkward 4 | went | save | enemy 

这是我的代码:`

 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]) row_idx = 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()) a = (set(synonyms)) #print (a) wb = xlwt.Workbook() ws = wb.add_sheet("test") for i, col in enumerate(a): for j, row in enumerate(col): ws.write(i, j, col) wb.save("sample.xls") 

`

但是,这段代码并不翻译所有的单词。 在输出excel中,只打印出最后一个单词,并根据字母的数量重复每一列中的单词。

我认为问题在于你正在覆盖你在内循环的每个循环中创build的表单,这就是为什么你只看到最后一个单词。 字母数量的重复可能是由于for j, row in enumerate(col):这一行for j, row in enumerate(col): :,col可能是一个string,你正在循环字符的数量,并在该循环内写入单元格。

我对你的代码做了一些修改,现在应该把你的工作表中的每个单词用逗号分隔。

 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()) ws.write(row_idx, col_idx, ",".join(synonyms)) wb.save("sample.xls") 

请注意,我在任何循环之外创build输出文件,并且我只调用ws.writesheet.ncols * sheet.nrows次。

Interesting Posts