Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 FuzzyFuzzy错误:警告:根:应用处理器将输入查询减少为空字符串,所有比较的分数为0。[查询:';/';]_Python_Python 3.x_Fuzzy Comparison_Fuzzywuzzy - Fatal编程技术网

Python FuzzyFuzzy错误:警告:根:应用处理器将输入查询减少为空字符串,所有比较的分数为0。[查询:';/';]

Python FuzzyFuzzy错误:警告:根:应用处理器将输入查询减少为空字符串,所有比较的分数为0。[查询:';/';],python,python-3.x,fuzzy-comparison,fuzzywuzzy,Python,Python 3.x,Fuzzy Comparison,Fuzzywuzzy,尝试编写一段代码,比较多个文件并返回多个选项之间的最高模糊比率 问题是我收到一条错误消息: 警告:根:应用处理器将输入查询减少为空字符串,所有比较的分数为0。[查询:'/'] 警告:根:应用处理器将输入查询减少为空字符串,所有比较的分数为0。[查询:'.] 导出的文件基本上是空白的。你知道为什么会这样吗 from fuzzywuzzy import fuzz, process import csv def readfile( filen ): with open(filen,'r')

尝试编写一段代码,比较多个文件并返回多个选项之间的最高模糊比率

问题是我收到一条错误消息:

警告:根:应用处理器将输入查询减少为空字符串,所有比较的分数为0。[查询:'/'] 警告:根:应用处理器将输入查询减少为空字符串,所有比较的分数为0。[查询:'.]

导出的文件基本上是空白的。你知道为什么会这样吗

from fuzzywuzzy import fuzz, process
import csv

def readfile( filen ):
    with open(filen,'r') as f:
        contents = f.readlines()
    return contents

def write_fuzzy( fileo, file1, file2 ):
    matches=[]
    for  item1 in file1:
        matches.append(process.extract( str(item1), file2, limit=2 )[0][0])
    with open( fileo, 'w' ) as f:
        w = csv.writer( f, delimiter = ',' )
        w.writerows( matches )

filenames = ['Documents/test_CSV_1.csv',\
             'Documents/test_CSV_2.csv']

 file_contents = []
 for filen in filenames: 
    file_contents.append( readfile( filen ) )

write_fuzzy( 'out.csv', filenames[0], filenames[1] )

所以我想我的答案就在这一行:

process.extract( str(item1), file2)
` 我认为file2是filename,它只是获取文件名而不是内容

所以,它有点像:

process.extract('Coca-Cola'、'Documents/test_CSV_1.CSV')

所以我认为解决办法是这样写:

def write_fuzzy( fileo, file1, file2 ):
matches=[]
file1 = readfile(file1)
file2 = readfile(file2)
for item1 in file1:
matches.append(process.extract( str(item1), file2, limit=2 )[0][0])
with open( fileo, 'w' ) as f:
    w = csv.writer( f, delimiter = ',' )
    w.writerows( matches )

在这种情况下,文件导出仍然不起作用。它不是把单词的每个字母都放在一列中。。。但这只是一个开始

很抱歉回答得太晚了。我面临着一个类似的问题,发现了你的问题

问题并不是真正的问题,它只是一个警告,实际上不会在比赛中产生任何差异

WARNING:root:Applied processor reduces input query to empty string, all comparisons will have score 0. [Query: '/']
表示
process.extract()
的查询字符串不包含任何自然语言的公共字符:
[query:'/']

在深入研究fuzzyfuzzy之后,我发现
将输入查询减少为空字符串
,这与您提供的搜索文本中的任何模式都不匹配

我消除这些警告的方法是在进行模糊搜索之前,使用字符串处理器验证查询字符串

from fuzzywuzzy import utils

invalid_query = " ... // "

if utils.full_process(invalid_query):
    # wont execute and not produce a warning
    process.extract(invalid_query, patterns)

如上所述,这只是一个警告,不会改变任何结果。有一种简单的解决方法/解决方案可以抑制此警告。库使用的是
日志记录
模块,而不是
警告
模块。可以在代码中包含这些行以抑制任何此类根警告,除非它是严重级别错误

import logging
logging.getLogger().setLevel(logging.ERROR)
如果不是根警告,可以使用以下代码段

import warnings
warnings.filterwarnings("ignore")
为了更好地理解这一点,我们还可以看看这段python代码。