csv 使用file1中的ID迭代file2,并向新文件添加内容

oyjwcjzk  于 2023-02-20  发布在  其他
关注(0)|答案(1)|浏览(110)

文件1

geographicSiteId,geographicAddressId,streetCode,streetName,streetNr,streetNrSuffix,floor,door,locality,postcode,city,zone,connectionPrice,fiberStatus
7999999,0a3f50b5-d364-32b8-e044-0003ba298018,940,Pedersmindevej,12,,,,Stensby,5485,Skamby,HOUSING,0,ADDRESS_CONNECTED

文件2

id,status,oprettet,ændret,vejkode,vejnavn,adresseringsvejnavn,husnr,etage,dør,supplerendebynavn,postnr,postnrnavn,stormodtagerpostnr,stormodtagerpostnrnavn,kommunekode,kommunenavn,ejerlavkode,ejerlavnavn,matrikelnr,esrejendomsnr,etrs89koordinat_øst,etrs89koordinat_nord,wgs84koordinat_bredde,wgs84koordinat_længde,nøjagtighed,kilde,tekniskstandard,tekstretning,ddkn_m100,ddkn_km1,ddkn_km10,adressepunktændringsdato,adgangsadresseid,adgangsadresse_status,adgangsadresse_oprettet,adgangsadresse_ændret,regionskode,regionsnavn,jordstykke_ejerlavnavn,kvhx,sognekode,sognenavn,politikredskode,politikredsnavn,retskredskode,retskredsnavn,opstillingskredskode,opstillingskredsnavn,zone,jordstykke_ejerlavkode,jordstykke_matrikelnr,jordstykke_esrejendomsnr,kvh,højde,adgangspunktid,vejpunkt_id,vejpunkt_kilde,vejpunkt_nøjagtighed,vejpunkt_tekniskstandard,vejpunkt_x,vejpunkt_y,afstemningsområdenummer,afstemningsområdenavn,brofast,supplerendebynavn_dagi_id,navngivenvej_id,menighedsrådsafstemningsområdenummer,menighedsrådsafstemningsområdenavn,vejpunkt_ændret,ikrafttrædelse,nedlagt,adgangsadresse_ikrafttrædelse,adgangsadresse_nedlagt,adgangsadresse_darstatus,darstatus,storkredsnummer,storkredsnavn,valglandsdelsbogstav,valglandsdelsnavn,landsdelsnuts3,landsdelsnavn,betegnelse
4decd9dc-1f1a-4ac2-ad29-5ce2877bc7e6,1,2019-08-29T14:21:50.823,2019-08-29T14:21:50.823,0306,Haulundvej,Haulundvej,93,,,,6760,Ribe,,,0561,Esbjerg,2007657,"Søndermarken, Ribe Jorder",251f,315673,484889.00977801974,6130238.110476224,55.31829849,8.76188569,A,5,TN,212.83,100m_61302_4848,1km_6130_484,10km_613_48,2023-02-10T11:42:25.912,2cf392a6-8649-4d48-bc8f-652a405da0d4,1,2019-08-29T14:21:50.823,2023-02-10T11:42:25.912,1083,Region Syddanmark,"Søndermarken, Ribe Jorder",05610306__93_______,8886,Ribe Domsogn,1464,Syd- og Sønderjyllands Politi,1151,Retten i Esbjerg,0053,Esbjerg Omegn,Landzone,2007657,251f,315673,05610306__93,2.7,662ea6da-9162-4876-a590-7ba2793c3747,fae767fe-e871-4c15-9fed-6049d7efa4dc,Adressemyn,A,V0,8.76197107,55.31854109,28,Ribe,1,,ae74a1c7-ce69-4ffe-af95-71dcb12eac18,1,Ribe Domsogn,2019-08-29T14:22:28.339685,2019-08-29T14:21:50.823,,2019-08-29T14:21:50.823,,3,3,7,Sydjylland,B,Sjælland-Syddanmark,DK032,Sydjylland,"Haulundvej 93, 6760 Ribe"

我想从文件1的第2列中获取ID,并在文件2中搜索该ID。如果ID存在于文件2中,我想将文件2中的第23和24列添加到新文件中。新文件应该与文件1一样,只是添加了新列(23,24)。

#! /usr/bin/env python3

import csv

file1 = 'whitelist.csv'
file2 = 'adresse.csv'

with open(file1, "r") as a, open(file2, "r") as b: 
    csv_f1 = csv.reader(a)
    csv_f2 = csv.reader(b)

    
    for row in csv_f1:
        instnr = row[0]
        darid = row[1]
        
        print (instnr, darid)
                
a.close()
b.close()

我有点困在如何做到这一点?

rxztt3cl

rxztt3cl1#

跟踪二十多个列变得乏味,因为另一个列将不可避免地插入到混合中。
你写的

csv_f1 = csv.reader(a)

首选DictReader,这样你就可以通过名称而不是数字来引用列。当然,有一个对应的编写器。
给定一对行,您可以合成一个更大的行:

combined_row = {**row_a, **row_b}

并将其写入结果.CSV文件。

相关问题