【发布时间】:2016-02-27 17:25:11
【问题描述】:
函数应该检查输入字符串中的每个单词与正确拼写列表中的所有单词并返回一个字符串:
如果原句中的一个词与句子中的一个词完全匹配 正确的拼写然后这个词没有被修改,它应该是 直接复制到输出字符串中。
如果句子中的单词可以匹配正确拼写列表中的单词 通过替换、插入或删除单个字符,然后 单词应该替换为正确拼写中的正确单词 列表。
如果前两个条件都不为真,则 原字符串不应该被修改,应该直接 复制到输出字符串。
注意事项:
不要对一个或两个字母单词进行拼写检查(将它们直接复制到 输出字符串)。
如果出现平局,请使用正确拼写列表中的第一个单词。
忽略大小写,即认为大写字母相同 小写字母。
输出字符串中的所有字符都应为小写 字母。
假设输入字符串只包含字母字符和 空格。 (a-z 和 A-Z)
删除单词之间的多余空格。
删除输出字符串开头和结尾的空格。
例子:
注意:
在第一个示例中,'thes' 没有替换为任何内容。
在第一个示例中,'case' 和 'car' 都可以替换原句中的 'cas',但选择了 'case',因为它首先遇到。
这是我尝试过但不是很有用的代码:
def spelling_corrector(input_string,input_list):
new_string = input_string.lower().split()
count = 0
for x in new_string:
for y in input_list:
for i in y:
if i not in x:
count += 1
if count == 1:
print(y)
if len(x) == len(y) or x not in input_list:
print(x)
spelling_corrector("Thes is the Firs cas", ['that','first','case','car'])`
【问题讨论】:
-
第二条规则,levenshtein distance