我正在尝试为自己创建一个小数据框或条目列表,如果你愿意的话。我希望能够在这个数据库中搜索特定的条目。代码的工作方式正是我想要的,即使它可能不是最优雅的写作方式-我仍然是新的python和我刚刚发现了csv模块的前几天-。我可以输入一个短语,它会给我相应的单词的百分比值
该文件是一个CSV文件的形式,我想有一个百分比值排序的输出。所以,最相关的匹配应该在顶部,最不相关的应该在底部。我使用fuzzylogic来计算两个字符串之间的相似性,但是我使用了difflib
最终结果是按字母顺序排序的,但不是按数字排序的,这是我的目标。我尝试过使用Panda,但是我得到了一大堆错误,可能是我的错,因为我不知道如何使用它,但是我想坚持使用“纯”python,可以说,目前是因为我想更好地掌握它
总结一下我的整个问题:你对结果进行数字排序的方法是什么
我将非常感谢您的帮助,并感谢您花时间阅读这篇长篇博文
try:
import csv,os,difflib,easygui,pickle,sys
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
import operator
except ModuleNotFoundError:
print ("You do not have the required modules installed.The progam will now close.")
raise SystemExit
Suche = "Kunde"
Wahrscheinlichkeit = 60
Eintrag=[]
def aehnlichkeit(a, b)
ergebnis = fuzz.token_sort_ratio(a,b)
return round (ergebnis,2)
with open('Platzhalter_Message_Keys.csv', 'rt') as csvfile:
Column=[]
reader = csv.reader(csvfile, delimiter=';')
for row in reader:
column=row[0],row[1],row[2]
Column.append(column)
eintrag=aehnlichkeit(Suche,row[1])
Eintrag.append(eintrag)
for Column,Eintrag in zip (Column,Eintrag):
if Eintrag >=Wahrscheinlichkeit:
print([Eintrag,Column])
代码的输出
[60, (' Index', 'Index', 'Index')]
[60, (' Keine', 'Keine', 'none')]
[100, (' Kunde', 'Kunde', 'Customer')]
[67, (' Kundenname', 'Kundenname', 'CustomerName')]
[77, (' Kundennr', 'Kundennr', 'CustomerNo')]
[62, (' KurzName', 'KurzName', 'ShortName')]
[62, (' Reklamation.Kunde_Email', 'Kunde_Email', 'Customer_email')]
[62, (' Reklamation.Kunde_L_Fax', 'Kunde_L_Fax', 'Customer_S_Fax')]
[62, (' Reklamation.Kunde_L_Ort', 'Kunde_L_Ort', 'Customer_S_City')]
[62, (' Reklamation.Kunde_L_PLZ', 'Kunde_L_PLZ', 'Customer_S_ZIPCode')]
[62, (' Reklamation.Kunde_R_Fax', 'Kunde_R_Fax', 'Customer_I_Fax')]
[62, (' Reklamation.Kunde_R_Ort', 'Kunde_R_Ort', 'Customer_I_City')]
[62, (' Reklamation.Kunde_R_PLZ', 'Kunde_R_PLZ', 'Customer_I_POBox')]
如果要对结果进行排序,则必须创建一个排序的结果列表,这将需要额外的内存来存储-您的代码只是在两个列表中动态生成的成对序列中进行迭代
使用内置的^{} 函数和^{} 可以很容易地创建一个
key
函数,作为用于排序项目的值—如下所示我还修复了我注意到的其他一些小问题
输出:
相关问题 更多 >
编程相关推荐