我有一个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