我有一個dict
,它描述了我想要應用於CSV文件中每一行的映射。Python CSV:根據字典映射寫入行
dict1 = {"key1":["value1", "value2"], "key2":["value3"]}
我的程序應該讀一行和映射特定列由dict
提供的值(一個或多個)的關鍵。如果每個鍵只有一個值,那麼腳本應將包含新值的行寫入新文件。如果某個鍵有多個值,則應爲每個值寫入一個新行。例如,csvin
包含2行。一行有一列,其中key1
存在,另一列有key2
。在這種情況下,輸出文件csvout
應包含更行比csvin
,實際上3.行中的兩個(與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提供的答案適用於簡單列表的情況,但無法在我的特定情況下使用。
幫助表示讚賞。
您是否嘗試過使用'dict's?它們非常適合描述映射。 – Kevin 2012-07-25 19:54:32
你想用什麼取代什麼?你的第一個循環就是將所有的list1切換到等於list2的元素。 – 2012-07-25 19:55:05