[英]Python: Match values between two csv files
我正在解析兩個不同的csv文件,需要在它們之間匹配一列。 當前,當我運行代碼段時,實際上兩個csv文件之間存在匹配的地址時,它不返回匹配值。 我遇到的問題是OnlineData csv文件中的addresss字段的縮寫。 例如:
In the Addresses csv In the OnlineData csv
4587 Newton Road 4587 Newton Rd
7854 Food Court 7854 Food Ct
查找匹配值時,如何告訴Python 僅在兩個csv文件中查找數字('4587')和第一個單詞('Newton')。
import csv
Addresses = set()
with open ('Addresses.csv') as f:
for row in csv.reader(f):
Addresses.add(row[1])
OnlineData = set()
with open ('C:/Users/OnlineData.csv') as g:
for row in csv.reader(g):
PermitData.add(row[1])
results = Addresses & OnlineData
print 'There are', len(results), 'matching addresses between the two csv files'
for result in sorted(results):
print result
由於您只對匹配數據的部分感興趣,因此您最好將該部分加載到set
,然后執行交集。
import csv
Addresses = set()
with open ('Addresses.csv') as f:
for row in csv.reader(f):
portion = ' '.join(row[1].split()[:-1]) # Loads "4587 Newton" instead of "4587 Newton Road"
Addresses.add(portion)
OnlineData = set()
with open ('C:/Users/OnlineData.csv') as g:
for row in csv.reader(g):
portion = ' '.join(row[1].split()[:-1])
OnlineData.add(portion)
results = Addresses & OnlineData
print 'There are', len(results), 'matching addresses between the two csv files'
for result in sorted(results):
print result
明顯的缺點是您丟失了一些信息,您仍然可以檢索這些信息。 另一種選擇是,以標准化的輸入,這意味着你可以替換Rd
與Road
和Ct
與Court
無論那些出現,這樣才能始終匹配信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.