我是编程新手,在完成大学作业时,我遇到了fuzzywuzzy包中的process.extract()函数的问题。
documentation说函数应该返回一个列表,但是我的代码返回一个类类型为None的对象。
如果我打印process.extract(limit=1),它将返回类似于列表的内容:
[("Matching string","Fuzz Ratio", "Index")]但是,我不能使用[]对此对象进行切片,因为它被归类为None。
我需要能够获取匹配字符串的索引,所以我需要找出process.extract()没有返回列表的原因,或者如何从None对象中获取最后一个元素。
谢谢,如果需要任何澄清,请让我知道。
编辑:好的,我的坏人们,我会尽量说得更具体一些。
最小可重复性样本:
注意: CSV文件只有两列问题和答案,它来自我的大学,所以我不确定我是否被允许上传确切的文件,很抱歉。
好吧,奇怪的是,重新创建这个例子修复了它,但我还是不能说出发生了什么。
第一个示例取自我的原始代码:
import pandas as pd
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
df_chat_bot = pd.read_csv("ChatBot-short.csv")
str_user_question = input("Question: ")
test_var = print(process.extract(str_user_question, df_chat_bot["Question"], limit = 1))
print(type(test_var))打印(类型(Test_var))行的输出是(直接从终端) "“。
然后,当我开始编写可重现的代码时:
from fuzzywuzzy import process
from fuzzywuzzy import fuzz
import pandas as pd
test_user_question = "vsc"
df_chat_bot = pd.read_csv("ChatBot-short.csv")
temp_var = process.extract(test_user_question,df_chat_bot["Question"], limit = 1)
print(temp_var)
print(type(temp_var))打印此类型的结果是"“
那么这是怎么回事呢?请注意,我注释掉了原始文件中的所有其他代码,因此此处粘贴的代码是唯一运行的代码。
发布于 2021-06-11 13:20:02
看到不同点:
你的代码:
test_var = print(process.extract(str_user_question, df_chat_bot["Question"], limit = 1))测试代码:
temp_var = process.extract(test_user_question,df_chat_bot["Question"], limit = 1)在您的代码中,process.extract()包装在print()中。函数print()总是返回None并将其赋值给test_var,这就是为什么你会得到一个错误。当然,type(None)就是NoneType。
如果您希望同时赋值和打印process.extract(...)的返回值,则必须在单独的语句中执行这两项操作,如第二个示例所示。
https://stackoverflow.com/questions/67931073
复制相似问题