2017-05-23 8 views
0

私はプログラミングとPythonで本当に新しいです。初心者向けの質問をしたい。私は列に単語を持つExcelファイルを持っています。私はこれらの単語を読み込み、別のExcelファイル内の同義語を生成したい。以下は、私はExcelから読みたい言葉です:Pythonの入出力データが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") 

`

しかし、このコードはすべての単語を翻訳しません。アウトプットエクセルでは、最後の単語のみを表示し、文字の数に基づいて各列の単語を繰り返すだけです。

答えて

1

私の問題は、内部ループの各サイクルで作成するシートを上書きしているということです。そのため、最後の単語しか表示されません。文字数による繰り返しはおそらくこの行のためですfor j, row in enumerate(col):、colはおそらく文字列であり、あなたはその文字列の数とループ内のセルを書き換えています。

私はあなたのコードにいくつかの変更を加えました。今では、あなたのシートの各単語をカンマ区切りのすべての同義語に置き換えるべきです。私は、任意のループ外一度出力ファイルを作成し、私はws.writeのみsheet.ncols * sheet.nrows回呼び出す

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") 

注意してください。

+0

ありがとうございます – runeza

関連する問題