[英]Python compare two list
我試圖從contatti.csv(包含兩列,“名稱”和“姓”)中找到training_full.csv(兩列,“ macroclass”和“ description”)內的所有行。 我想在training_full.csv中檢索“說明”的所有行,其中contatti.csv中包含“名稱”和“姓”。
我創建的腳本似乎只評估training_full.csv的第一行,因此,僅打印training_full.csv的第一行(腳本在其中找到匹配項)。 如果我以第一行沒有任何匹配的方式修改training_full.csv,則結果為空。
這里的代碼:
import csv
match=[]
with open('xxxxxxxxxxx/training_full1.csv', encoding='utf-8') as csvfile, open('output.csv', 'wb') as output, open('xxxxxxxxxxx/contatti.CSV') as contatti:
spamreader = csv.reader(csvfile)
spamreader_contacts = csv.reader(contatti, delimiter=';')
spamwriter = csv.writer(output)
for row_desc in spamreader:
#print(righe[0])
for row_cont in spamreader_contacts:
#print(row[0])
if (row_cont[0] + " " + row_cont[1]) in row_desc[0]:
match.append(row_desc[0])
print(match)
謝謝你的幫助,
菲利波。
查看您的問題,它似乎可以分為三個部分:1)讀取名稱,並建立一個列表2)將訓練文件與名稱列表進行比較3)編寫匹配項
這樣做,我們可以得到類似於以下的解決方案:
import csv
names = []
with open('xxxxxxxxxxx/contatti.csv', 'rb') as f:
contatti = csv.reader(f, delimiter=';')
for row in contatti:
names.append("{} {}".format(row[0], row[1]))
matches=[]
with open('xxxxxxxxxxx/training_full1.csv', 'rb', encoding='utf-8') as f:
training = csv.reader(f)
for row in training:
for name in names:
if name in row[1]: # description being the second column
matches.append(row[1])
break
with open('output.csv', 'wb') as f:
output = csv.writer(f)
for match in matches:
output.writerow(match)
print(matches)
如注釋中所指出的,解決方案嘗試的主要問題是,一旦您尋找第一個匹配項,就會用盡csv閱讀器。 在我介紹的解決方案中,首先會建立一個名稱列表。 這樣可以確保我們可以多次搜索的名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.