0

口座番号の 2 つのグループを比較しようとしています (Python と xlrd/xlwt を使用)。

最初は私のお気に入りのアカウントのリストです。秒は、そのアカウントの誰かが私に助けを求めたときに記録されたアカウントのリストです。ただし、2 番目のリストは実際にはスプレッドシートであり、ケース ID やカテゴリなど、アカウント番号だけではありません。たとえば、アカウント「100」が「靴」について電話をかけ、ケース #50 として記録されました。(また、スプレッドシートにアカウント、カテゴリ、ケース番号の 3 つの列があると仮定します)。

私の目的は、スプレッドシートを見て、私のお気に入りのアカウントの 1 つ (最初のリストから) の誰かが助けを求めて電話をかけてきたことを見つけることです。だから私は基本的に次のようなものを使いたい

myFavoriteAccounts = ['100','200','300','400','500']

次に、スプ​​レッドシート全体を調べて、私のお気に入りのアカウントの 1 つが表示されるインスタンス、ケース ID、およびカテゴリを印刷します。

両方のリストに表示されるアカウントを見つけることができました。

match = set(myFavoriteAccounts) & set(spreadsheetAccountsColumn)

しかし、スプレッドシートを反復処理して、それらのアカウントの 1 つが表示されるたびに、カテゴリとケース ID を取得する方法がわかりません。

たとえば、アカウント「100」が、ケース #50 の「靴」について 2 回、次に「ソックス」とケース #70 について 2 回電話をかけてきたことを特定できるようにしたいと考えています。

4

2 に答える 2

0

スケルトンとしてのコードを次に示します。

xls = xlrd.open_workbook(xlsname)
worksheet = xls.sheet_by_name('Accounts') # Use whatever name is on the worksheet tab in excel
max_col = worksheet.ncols - 1 # Cells addressed from 0
max_row = worksheet.nrows - 1 # Cells addressed from 0
account_col = 0 # Assuming it's the first column

for row in xrange(0, max_row):
    value = xlrd.cell_value(row, account_col)
    if value in favorites:
        print "Do something"
        print "I can address other cells in this row if I want"
        for col in xrange(0, max_col):
            new_value = xlrd.cell_value(row, col)

この特定のスクリプトをテストしたことはありませんが、この方法を自分のプログラムで使用しました。

于 2013-01-22T20:30:32.467 に答える
0

データがcsvであると仮定すると、 fileptr.readlines() を使用してそれを読み取り、区切り記号に基づいて行を分割できます。そこから言うのは非常に簡単です

data = open('myfilepath','r').readlines()
data = [ d.split('delim') for d in data ]
accountitems = {}

for row in data:
    if row[0] in match: # the account number
        accountitems.setdefault(row[0],[]).append(line)

これにより、キーがアカウントの一致であり、値がそのアカウントを含むすべてのエントリのリストである辞書が作成されます

Python csv を使用して行ったコードの一部を修正したものも参考になるかもしれません。 -調べる/

また

import re
data = open('myfilepath','r').read() #note using read vs readlines
for fave in favelist:
    print "\n".join( re.findall(r"^%s.*$" % fave, data) ), "\n"
于 2013-01-22T20:10:45.047 に答える