この質問に付けられたタイトルが悪くて申し訳ありませんが、コードなしで説明するのは難しいです。コードで次のことを実行しようとしています。ランク キーが 2 で、数値キーが任意 (空白、数値、またはその他) である場合、および前の行がランク キー 1 および数値キー 1 である場合、スクリプトの次の行に進みます。
ただし、多くの努力にもかかわらず、コードが本来あるべきものを生成するようには見えません。注意が必要なコード行は 14 行目ですが、コンテキストを設定するためのバックグラウンド コードを提供するのが最善であると考えました。
サンプルデータ
Unique Name,Rank,100% OmNTS,Numeric
xyz,1,10.2,1
xyz,2,12.5,-
xyz,3,18.8,2
xyz,4,25.9,
pmz,1,29.8,1
pmz,2,200.9,5
pmz,3,210.9,
pmz,4,250.89,
pmz,5,290.9685,
xyz2,1,10.9,1
xyz2,2,12.59,3
xyz2,3,18.8,2
xyz2,4,25.9,,
pmz2,1,29.8,,
pmz2,2,200.9,5
pmz2,3,210.9,
pmz2,4,250.89,
pmz2,5,290.9685,
コードスニペット:
for counter, row in enumerate(reader):
counter += 1
if counter != 1:
for field in fields[3:]:
if field == "Numeric" or field == "Rank":
row[field] = row[field] and float(row[field])
if field == "Rank":
row[field] = row[field] and int(row[field])
key = (row['Rank'], row['Numeric'])
previous = entries[row['Unique Name']]
if (key[0] == 2) and (1 <= key[1] <= 50 or key[1] is None) and ((1, 1) in previous):
p = previous[(1, 1)]
print 'test data text {r[Rank]} test {p[Rank]} test {r[100% OmNTS]} test {p[100% OmNTS]} '.format(r=row, p=p)
行 2 の一致が期待されます。行 3 の要素 (タイトル行を含む) は、行 2 の要素が以前のように格納されます。行 7 と 12 についても同じですが、行 15 は (1,1) ではないため、この Key 参照は行 16 を無視します。
望ましい出力
test data text 2 test 1 test 12.5 test 10.2
test data text 2 test 1 test 200.9 test 29.8
test data text 2 test 1 test 12.59 test 10.9
私の問題を見てくれてありがとう。AEA