完全不熟悉Python的商科学生想要一个用于字符串模糊匹配的脚本



我是一名刚开始学习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

相关内容

最新更新