0

xlrd を使用して Excel からいくつかのレコードを読み込み、関係を確認しようとしています。詳細については、私のアマチュア コードを参照してください。

import xlrd

feature_list_file = xlrd.open_workbook('FeatureList.xls')
feature_table = feature_list_file.sheet_by_index(0)

num_feature_rows = feature_table.nrows
num_feature_cols = feature_table.ncols

feature_list = []

for i in range(num_feature_rows):
    feature_list.append(feature_table.cell(i, 1))
# print feature_list

issue_list_file = xlrd.open_workbook('IssueList.xls')
issue_table = issue_list_file.sheet_by_index(0)

num_issue_rows = issue_table.nrows
num_issue_cols = issue_table.ncols

epic_list = []

for i in range(num_issue_rows):
    if issue_table.cell(i, 0).value == 'Epic':
        epic_list.append(issue_table.cell(i, 1).value)

# print epic_list


def check_link(actual_link, parent_list):
    result = True
    for i in range(parent_list.__len__()):
        count = 0
        if parent_list[i] in actual_link:
            count += 1
            if count > 1:
                result = False
                break
    return result


invalid_list = []

for i in range(num_issue_rows):
    if issue_table.cell(i, 10).value == '':
        invalid_list.append(issue_table.cell(i, 1).value)
    else:
        if issue_table.cell(i, 0).value == 'Story':
            if check_link(issue_table.cell(i, 10).value, epic_list):
                invalid_list.append(issue_table.cell(i, 1).value)
        if issue_table.cell(i, 0).value == 'Epic':
            if check_link(issue_table.cell(i, 10).value, feature_list):
                invalid_list.append(issue_table.cell(i, 1).value)

print invalid_list

ただし、常に以下のメッセージを返します

Traceback (most recent call last):
  File "/Users/sut/PycharmProjects/ItemChecker/JiraItemChecker.py", line 54, in <module>
    if check_link(issue_table.cell(i, 10).value, feature_list):
  File "/Users/sut/PycharmProjects/ItemChecker/JiraItemChecker.py", line 36, in check_link
    if parent_list[i] in actual_link:
TypeError: coercing to Unicode: need string or buffer, Cell found

この問題を解決するにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

inオブジェクトに対してを実行しようとしています。xlrd.cell変更する必要があると思います

if parent_list[i] in actual_link:

if parent_list[i].value in actual_link:

あなたのコメントに基づいて私の答えにいくつかの詳細を追加します

あなたの呼び出しは、文字列とセルのリストのように見えるものを渡しています。文字列は問題ありませんが、関数ではリストを反復処理し、セル クラスの各インスタンスを正しく渡された文字列と比較しようとします。問題があります。

これが役立つことを願っています (コードを読み間違えていません!)

そしていくつかの詳細 -

feature_listを作成するときの問題の核心はepic_list次のとおりです。最初にリストにセルを追加し、2番目に値を追加します。しかし、両方のタイプで同じcheck_link関数を使用しています。したがって、両方のタイプを処理するように関数を拡張する必要があるかcheck_link、一貫してどちらかを選択する必要があります。

于 2013-07-19T16:12:19.537 に答える