在Python中读取和写入CSV文件

时间:2016-01-02 15:37:40

标签: python csv file-writing

我正在尝试将前3行Vehicle Owners.csv写入Speeding Owners.csv以及Speeding Vehicles.csv的第3和第4行。但是,如果没有超速车辆与车主相匹配,则车主将失去车主.cv

有人可以解释为什么这不起作用吗?

Speeding Vehicles.csv看起来像这样:

  

GH76GHJ,华莱士街,30,35.0
  GH67MNB,华莱士街,30,35.0
  GH76GHJ,绿色街道,40,55.9
  GH76GJ,绿色街道,40,55.9

Vehicle Owners.csv如下所示:

  

GH76HJK,1红街,罗斯赌博   BH98LOP,1国王路,muammar gaddafi
  CX87YHJ,1艾莉森驱动器,chandler bing
  HJ09UJI,6 avenue,idi amin
  KI59TOM,7华尔街,罗伯特·马卡布

我目前的代码是:

import csv

with open('Vehicle Owners.csv', 'r') as vehicleownersfile:
    owner_reader = csv.reader(vehicleownersfile)
    details = {row[0].lower(): row for row in owner_reader}

with open('Speeding Vehicles.csv', 'r') as speedingvehiclesfile:
    owner_reader = csv.reader(speedingvehiclesfile)

    with open('Speeding Owners.csv', 'w') as speedingownersfile:
        sowriter = csv.writer(speedingownersfile)

        with open('Missing Owners.csv', 'w') as missingownersfile:
            mowriter = csv.writer(missingownersfile)

            for row in owner_reader:
                detail = details.get(row[1].lower())

                if detail is None:
                     mowriter.writerow(row[0], row[1], row[2])
                else:
                     sowriter.writerow(row[0], row[1], row[2], detail[1], detail[2])

1 个答案:

答案 0 :(得分:1)

我并不完全知道你要做什么,但对我来说,Python(3)大声说writerow需要1个参数,所以我不得不替换这些行:

mowriter.writerow(row[0], row[1], row[2])
sowriter.writerow(row[0], row[1], row[2], detail[1], detail[2])

通过

mowriter.writerow(row[0:3])
sowriter.writerow(row[0:2] + detail[1:3])
相关问题