我有一个dict
描述我想应用于 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 提供的答案适用于简单列表,但我无法让它在我的特定情况下工作。
帮助表示赞赏。