Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Try,Except/If语句组合-缺少结果_Python_Python 3.x_Csv_Exception Handling_Fuzzywuzzy - Fatal编程技术网

Python Try,Except/If语句组合-缺少结果

Python Try,Except/If语句组合-缺少结果,python,python-3.x,csv,exception-handling,fuzzywuzzy,Python,Python 3.x,Csv,Exception Handling,Fuzzywuzzy,我将一个大学列表与其他12个列表进行比较,找到模糊的字符串匹配,并将所有结果写入csv。我不是在对一个大列表进行模糊字符串匹配,因为我需要知道匹配来自哪个列表。 列表示例: data = [[1-00000, "MIT"], [1-00001, "Stanford"] ,...] Data1 = ['MASSACHUSETTS INSTITUTE OF TECHNOLOGY (MIT)'], ['STANFORD UNIVERSITY'],... 在StackOverflow的帮助下,我得到

我将一个大学列表与其他12个列表进行比较,找到模糊的字符串匹配,并将所有结果写入csv。我不是在对一个大列表进行模糊字符串匹配,因为我需要知道匹配来自哪个列表。 列表示例:

data = [[1-00000, "MIT"], [1-00001, "Stanford"] ,...]

Data1 = ['MASSACHUSETTS INSTITUTE OF TECHNOLOGY (MIT)'], ['STANFORD UNIVERSITY'],...
在StackOverflow的帮助下,我得到了:

for uni in data:
    hit = process.extractOne(str(uni[1]), data10, scorer = fuzz.token_set_ratio, score_cutoff = 90)
    try:
        if float(hit[1]) >= 94:
            with open(filename, mode='a', newline="") as csv_file:
                fieldnames = ['bwbnr', 'uni_name', 'match', 'points']
                writer = csv.DictWriter(csv_file, fieldnames=fieldnames, delimiter=';')
                writer.writerow({'bwbnr': str(uni[0]), 'uni_name': str(uni[1]), 'match': str(hit), 'points': 10})

    except:
        hit1 = process.extractOne(str(uni[1]), data11, scorer = fuzz.token_set_ratio, score_cutoff = 90)
        try:
            if float(hit1[1]) >= 94:
                with open(filename, mode='a', newline="") as csv_file:
                      fieldnames = ['bwbnr', 'uni_name', 'match', 'points']
                      writer = csv.DictWriter(csv_file, fieldnames=fieldnames, delimiter=';')
                      writer.writerow({'bwbnr': str(uni[0]), 'uni_name': str(uni[1]), 'match': str(hit), 'points': 5})
继续往下看12个列表,直到最后一个例外,我将分数低于94分并以“未找到”结束:

我错过了什么?在
过程中,我感觉结果返回“None”。由于某种原因,extractOne正在被删除。
任何帮助都将不胜感激


可以找到完整的代码。

最后一次尝试应该是检查所有列表并在不得分的情况下做到最好:

except:
    hit12 = process.extractOne(str(uni[1]), big_list, scorer = fuzz.token_set_ratio)
    with open(filename, mode='a', newline="") as csv_file:
           fieldnames = ['bwbnr', 'uni_name', 'match', 'confidence', 'points']
           writer = csv.DictWriter(csv_file, fieldnames=fieldnames, delimiter=';')
           writer.writerow({'bwbnr': str(uni[0]), 'uni_name': str(uni[1]), 'match': "CHECK AGAIN " + str(hit12[0]), 'confidence': str(hit12[1]), 'points': 3})

请修复缩进-您的代码为否-很难看到您在做什么…如果float(hit[1])>=94:…
,为什么不在文件中写入任何内容?您只在其中写入空字符串…-为什么要尝试:除了:根本没有。。。代码对我来说没有多大意义-抱歉,请将您的代码简化为包含解调数据并复制您的问题的有意义的代码。抱歉,我删除了写入csv的内容,因为它使代码凌乱且冗长,过于关注“最低”要求。添加了指向完整代码的链接。现在编辑问题。谢谢
scored_testdata = []
for uni in data:
     hit = process.extractOne(str(uni[1]), big_list, scorer = fuzzy.token_set_ratio, score_cutoff = 90)
     scored_testdata.append(hit)
print(len(scored_testdata))
except:
    hit12 = process.extractOne(str(uni[1]), big_list, scorer = fuzz.token_set_ratio)
    with open(filename, mode='a', newline="") as csv_file:
           fieldnames = ['bwbnr', 'uni_name', 'match', 'confidence', 'points']
           writer = csv.DictWriter(csv_file, fieldnames=fieldnames, delimiter=';')
           writer.writerow({'bwbnr': str(uni[0]), 'uni_name': str(uni[1]), 'match': "CHECK AGAIN " + str(hit12[0]), 'confidence': str(hit12[1]), 'points': 3})