1

Excelファイルの最初の列(姓)からセルを取得し、同じ行に隣接するセルのテキスト内でその文字列を検索するプログラムを作成しようとしています。

現在、私のコードは次のようになっています。

    import xlrd
workbook = xlrd.open_workbook("C:\Python27\Doc\Book3.xls")
worksheet = workbook.sheet_by_name("Sheet1")
num_rows = worksheet.nrows - 1
num_cells = worksheet.ncols - 1
curr_row = -1
while curr_row < num_rows:
    curr_row += 1
    row = worksheet.row(curr_row)
    curr_cell = 2
    while curr_cell < num_cells:
        curr_cell += 1
        cell_value = worksheet.cell_value(curr_row, curr_cell)
sh = workbook.sheet_by_index(0)     
first_col = sh.col_values(2)
second_col = sh.col_values(3)
L = [first_col]
L1 = [second_col]
for i, j in enumerate(L):
    if j in L1[i]:
        print j
    else:
        print 'no'

リストを手動で生成すると、私のコードは「機能する」ようです (つまり、L = ['a', 'b', 'c'] および L1 = ['Today a cat a', 'Today b のテスト リスト) cat b'] などですが、xlrd を使用してリストを作成しようとすると、単一の「いいえ」の出力が表示されるだけで、非常に混乱します。そうでなければ、リストのサイズが不安定です (列 A に 16,000 人の名前、列 B に約 5,000,000 語のテキスト)

提供できるヘルプ/ヒントは大歓迎です。Web の周り (およびここ) で同様のタスクに対する多くのアプローチを見てきましたが、さまざまなアプローチを自分にとって効果的なものに統合する方法がわかりません。

どうもありがとう

4

1 に答える 1

0

試してみる:

import xlrd

workbook = xlrd.open_workbook("input.xls")
worksheet = workbook.sheet_by_name("Sheet1")

for row in xrange(worksheet.nrows):
    value_first = worksheet.cell_value(row, 0)
    value_second = worksheet.cell_value(row, 1)
    if value_first in value_second:
        print row
    else:
        print 'no'
于 2013-07-22T20:06:26.710 に答える