FuzzyWuzzy error: WARNING:root:Applied processor reduces input query to empty string, all comparisons will have score 0. [Query: '/']
FuzzyWuzzy error: WARNING:root:Applied processor reduces input query to empty string, all comparisons will have score 0. [Query: '/']
尝试编写一个代码来比较多个文件和return多个选项之间的最高模糊率。
问题是我收到一条错误消息:
WARNING:root:Applied 处理器将输入查询减少为空字符串,所有比较的得分均为 0。[查询:'/']
WARNING:root:Applied 处理器将输入查询减少为空字符串,所有比较的得分均为 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] )
抱歉回答晚了。我遇到了类似的问题并找到了你的问题。
这个问题并不是真正的问题,它只是一个警告,实际上不会导致您的匹配出现任何差异。
WARNING:root:Applied processor reduces input query to empty string, all comparisons will have score 0. [Query: '/']
表示 process.extract()
的查询字符串不包含任何自然语言的常见字符:[Query: '/']
.
深入研究 fuzzywuzzy 后,我发现 string processor reduces input query to empty string
与您提供的搜索文本中的任何模式都不匹配。
我消除这些警告的方法是在进行模糊搜索之前使用该字符串处理器验证查询字符串。
from fuzzywuzzy import utils
invalid_query = " ... // "
if utils.full_process(invalid_query):
# wont execute and not produce a warning
process.extract(invalid_query, patterns)
如上所述,这只是一个警告,不会改变任何结果。有一个简单的 workaround/solution 来抑制这个警告。该库使用 logging
模块而不是 warning
模块。可以在代码中包含这些行以抑制任何此类根警告,除非它的严重级别为 ERROR。
import logging
logging.getLogger().setLevel(logging.ERROR)
如果不是根警告,可以改用以下代码段。
import warnings
warnings.filterwarnings("ignore")
为了更好地理解这一点,还可以查看这段 python 代码。
https://github.com/seatgeek/fuzzywuzzy/blob/master/test_fuzzywuzzy_pytest.py
尝试编写一个代码来比较多个文件和return多个选项之间的最高模糊率。
问题是我收到一条错误消息:
WARNING:root:Applied 处理器将输入查询减少为空字符串,所有比较的得分均为 0。[查询:'/'] WARNING:root:Applied 处理器将输入查询减少为空字符串,所有比较的得分均为 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] )
抱歉回答晚了。我遇到了类似的问题并找到了你的问题。
这个问题并不是真正的问题,它只是一个警告,实际上不会导致您的匹配出现任何差异。
WARNING:root:Applied processor reduces input query to empty string, all comparisons will have score 0. [Query: '/']
表示 process.extract()
的查询字符串不包含任何自然语言的常见字符:[Query: '/']
.
深入研究 fuzzywuzzy 后,我发现 string processor reduces input query to empty string
与您提供的搜索文本中的任何模式都不匹配。
我消除这些警告的方法是在进行模糊搜索之前使用该字符串处理器验证查询字符串。
from fuzzywuzzy import utils
invalid_query = " ... // "
if utils.full_process(invalid_query):
# wont execute and not produce a warning
process.extract(invalid_query, patterns)
如上所述,这只是一个警告,不会改变任何结果。有一个简单的 workaround/solution 来抑制这个警告。该库使用 logging
模块而不是 warning
模块。可以在代码中包含这些行以抑制任何此类根警告,除非它的严重级别为 ERROR。
import logging
logging.getLogger().setLevel(logging.ERROR)
如果不是根警告,可以改用以下代码段。
import warnings
warnings.filterwarnings("ignore")
为了更好地理解这一点,还可以查看这段 python 代码。 https://github.com/seatgeek/fuzzywuzzy/blob/master/test_fuzzywuzzy_pytest.py