我是一名刚开始学习Python的商科学生。我的教授让我在两个文件之间进行模糊匹配:美国专利信息和从证券交易所网站下载的公司信息。我的任务是比较美国专利文献中出现的公司名称(文件1的第1栏)和证券交易所网站上的名称(文件2中的第1栏)。据我所知,(1) 第一步是将列出的所有字母文件 1 和文件 2 更改为小写;(2) 从文件 2 中选取每个名称,并将其与文件 1 中的所有名称匹配,并返回 15 个最接近的匹配项。(3)重复步骤2,运行所有名称是文件2。(4)每次匹配都有一个相似度。我想我会使用 SequenceMatcher() 对象。我只是学习如何从我的csv文件导入数据(我有2个文件),见下文
import csv
with open('USPTO.csv', 'rb') as csvfile:
data = csv.reader(csvfile, delimiter=',')
for row in data:
print "------------------"
print row
print "------------------"
for cell in row:
print cell
很抱歉我的愚蠢问题,但我太新了,无法用我自己的数据替换字符串("abcde"、"abcde",如下所示)。我不知道如何将导入的数据更改为小写。我什至不知道如何设置最接近的 15 个匹配标准。我的教授告诉我这是一件容易的事,但我真的感到失败了。感谢您的阅读!希望有人能给我一些指示。我不是那么愚蠢的:)
>>> import difflib
>>> difflib.SequenceMatcher(None, 'abcde', 'abcde').ratio()
1.0
一一回答您的问题。
1)"我不知道如何将导入的数据更改为小写。
为了将单元格更改为小写,您将使用 [string].lower()
以下代码将以小写形式打印出每个单元格
import csv
with open('USPTO.csv', 'rb') as csvfile:
data = csv.reader(csvfile, delimiter=',')
for row in data:
print "------------------"
print row
print "------------------"
for cell in row:
print cell.lower();
因此,要将每个单元格更改为小写,您需要这样做
import csv
with open('USPTO.csv', 'rb') as csvfile:
data = csv.reader(csvfile, delimiter=',')
for row in data:
for cell in row:
cell = cell.lower();
2)"我什至不知道如何设置最接近的15场比赛标准。
为此,您应该设置一个字典,键将是第一个字符串,值将是对列表,(string2,来自difflib的值。SequenceMatcher(None, string1, string2).ratio()).
请尝试编写一些代码,我们将帮助您修复它。
查看如何构建字典 https://docs.python.org/2/tutorial/datastructures.html