【问题标题】:difflib.get_close_matches() - Help getting desired resultdifflib.get_close_matches() - 帮助获得想要的结果
【发布时间】:2014-02-01 04:46:24
【问题描述】:

该程序的基本要点是从员工姓名列表开始,然后对其进行排序。等待用户输入“end”以停止填充名称列表(我有 100 个名称,我将其缩短为示例)。之后,用户可以输入员工姓名,程序将运行 difflib.get_close_matches()。

问题来了;我收到 get_close_matches 的语法错误。我应该如何以不同的方式进入 difflib?还;如果您有任何使代码更高效的提示,请同时说明它如何以及为什么更高效。我对 Python 相当缺乏经验,所以要温柔,嗯?

示例代码:

import difflib
employeeNames = ['Colton','Jayne','Barb','Carlene','Dick','Despina']
employeeNames.sort()
endInput = input('Type "end" to view list of names.\n\n')
if endInput == "end":
    userEmpName = input("Please enter the employee name you're searching for. We'll return the best match on record."
get_close_matches(userEmpName, employeeNames, 1)

【问题讨论】:

  • 加上完整的回溯会好很多。
  • @Lafexlos :我愿意这样做,如果你给我有关如何这样做的信息。 >.>'
  • 添加你得到的完整错误。哪条线,哪个功能等等。
  • 这是完整的错误;无效的语法错误不会运行代码以提供更多信息。我需要修复它在代码中的措辞方式,以使其在运行时出现问题。 ._.

标签: python list sorting difflib


【解决方案1】:

您的代码有语法错误: 将此代码与您的匹配:

import difflib
employeeNames = ['Colton','Jayne','Barb','Carlene','Dick','Despina']
employeeNames.sort()
endInput = raw_input('Type "end" to view list of names.\n\n')
if endInput == "end":
    userEmpName = raw_input("Please enter the employee name you're searching for. We'll return the best match on record.")
    print difflib.get_close_matches(userEmpName, employeeNames, 1)
  1. 您没有在input() 方法中关闭左大括号。

  2. 我建议在处理字符串时使用raw_input() 而不是input()。

  3. 如果您只导入了类(在您的情况下为import difflib),则应使用classname.method(),因此请改用difflib.get_close_matches(string,list,n)。

  4. 需要在返回值前使用print声明。

还应在if 内部调用get_close_matches(),因为如果endInput!='end' 则NameError 将发生在userEmpName 中。

编辑:

我应该问一下你的 python 解释器版本。
打印行应该像这样使用大括号。


print(difflib.get_close_matches(userEmpName, employeeNames, 1))

原因是在python 2.x 中打印的是statement(正如我在第4 点中提到的),但在python 3.x 中是function。

【讨论】:

  • 我试图运行你的代码,我得到了和我一样的错误信息;无效的语法。它在打印后突出显示“difflib”。还;感谢您的建议。我会尽量将其纳入。 :)
  • 我在下班之前一直在离开我的电脑,但我回家后会再次运行它并告诉你结果。
  • 我好像没有和你一样的IDLE编辑器; print 不会变成橙色,raw_input 不会变成紫色。这是我运行它时得到的结果:link
  • 不用担心print 的差异,因为我使用的是python 2.7 而你使用的是python 3.3
  • 嘿嘿!它现在就像一个魅力。感谢您对代码的帮助,以及为什么语法错误不断弹出的解释。我会确保以后记住这一点。
猜你喜欢
  • 2018-08-15
  • 1970-01-01
  • 1970-01-01
  • 2017-07-14
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
相关资源
最近更新 更多