-2

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

1 回答 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了解如何构建字典

于 2014-11-12T20:24:58.063 回答