Python:匹配两个csv文件之间的值

2024-10-04 01:36:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在分析两个不同的csv文件,需要在它们之间匹配一个列。目前,当我运行snippet时,当两个csv文件之间存在匹配的地址时,它不会返回匹配的值。我遇到的问题是OnlineData csv文件中地址字段的缩写。例如:

In the Addresses csv                             In the OnlineData csv
  4587 Newton Road                                    4587 Newton Rd
  7854 Food Court                                     7854 Food Ct

在查找匹配值时,我如何告诉Python只查找csv文件中的数字('4587')和第一个单词('Newton')。在

^{pr2}$

Tags: 文件csvtheinfoodaddresses地址数字
1条回答
网友
1楼 · 发布于 2024-10-04 01:36:17

因为您只对匹配部分数据感兴趣,所以您可以将该部分加载到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,并将{}替换为{},这样就可以始终获得匹配的信息。在

相关问题 更多 >