dict
CSVファイルのすべての行に適用するマッピングを説明するがあります。
dict1 = {"key1":["value1", "value2"], "key2":["value3"]}
私のプログラムは1つの行を読み取り、特定の列のキーをによって提供される値にマップする必要がありdict
ます。キーごとに値が1つしかない場合、スクリプトは新しい値を含む行を新しいファイルに書き込む必要があります。キーに複数の値がある場合は、値ごとに1つの新しい行が書き込まれる必要があります。
たとえば、csvin
2行が含まれています。key1
1つの行にはが存在する列があり、もう1つの行にはがありますkey2
。この場合、出力ファイルには、事実上3よりも多くの行がcsvout
含まれている必要があります。1つの単一の値を除いて、2つの行(に関連付けられている)は同一になります。csvin
key1
私の現在のスクリプトはこれです:
def convSan(sfin, cfout):
with open(sfin, "rb") as fin:
with open(cfout, "wb") as fout:
csvin = csv.reader(fin)
csvout = csv.writer(fout, delimiter=",")
fline = csvin.next()
csvout.writerow(fline)
for row in csvin:
row[25] = dict1[row[25]]
csvout.writerow(row)
これにより、入力ファイルと同じ列数の出力ファイルが生成されますが、すべてのフィールドに正しい新しい値が入力されます(一部のフィールドは値のリストになりました)。
@ sr2222によって提供される答えは、単純なリストの場合には機能しますが、特定の場合には機能させることができません。
ヘルプをいただければ幸いです。