Я запрашивая пользователей от активного источника каталогов и вытягивать их имена, от их я пытаюсь тянуть ближайший матч с помощью данного входа: Однаконайти ближайший матч в строку
from pyad import adquery
import difflib
data = []
q = adquery.ADQuery()
q.execute_query(
base_dn="some info"
)
data_given = raw_input("Enter user(last,first): ")
for row in q.get_results():
item = row["distinguishedName"]
user = ''.join(item.split(",")[0:2:])
new_user = user.replace("\\", ",").replace("CN=", "")
print new_user
if new_user == data_given:
data = [new_user]
else:
data = difflib.get_close_matches(data_given, new_user, n=10, cutoff=1.0)
if not data:
print "No user was found with the criteria given."
else:
print data
, то пользователи Я тянущие будет в конечном итоге выглядит так:
Kadiyala, Chndr
Doulas, Jh P.
Perkins, Thomas - OSM-OCO CTR
Lattsw, Tamka M - OAM OCO
И difflib
не будет тянуть ближайший матч.
Например, предположим, что пользователь вводит «Перкинс, Томас»:
Enter user(last,first): Perkins, Thomas
No user was found with the criteria given.
Есть ли способ я могу получить difflib
вытащить матч, основываясь на том, сколько символов совпадают в данных критериях? Я искал документы и не мог ничего найти при изменении критериев соответствия для difflib
.
«Возможные действия» должен быть списком строк, в то время как ваш 'new_user' является одной строкой. Кроме того, не могли бы вы собрать все имена из запроса в одном списке и затем использовать 'get_close_matches()' для всех из них сразу? – hop