我在数据库中有表,其中包含2或3个单词的名称列表。 所以我希望当用户在输入中输入任何字符串时,该字符串将被拆分为字符明智,然后每个字符与数据库中的字符串匹配。在atlast哪个字符串匹配用户字符串的更多字符,结果将根据字符匹配存储在数组中。它还依赖用户输入字符串模式。
我给你一个我想要的例子
在下表中存储名称
QImage window::showImage(cv::Mat mat)
{
cv::Mat tmp;
mat.convertTo(tmp, CV_8U);
cvtColor(tmp, tmp, CV_BGR2RGB);
QImage img = QImage((const unsigned char *)(tmp.data), tmp.cols, tmp.rows, tmp.step, QImage::Format_RGB888);
return img;
}
用户输入字符串为:
Neeraj Kumar
Pankaj Sharma
Rahul kapoor
然后结果如下:
rkp
原因:
1.Rahul Kapoor
2.Neeraj Kumar
3.Pankaj Sharam
我希望在Django框架中使用更少的代码进行此搜索,但无论如何任何人都可以使用任何语言提供代码。
我认为这也有助于其他人更好地进行搜索
答案 0 :(得分:0)
有iregex
独立过滤QuerySet案例,如此
Entry.objects.filter(name__iregex=r'[rkp]')
将返回所有Entry
个name
个对象,其中包含任意({1}}个字符。
然后你可以在Python中进行排序。
修改强>
这应该这样做。
[]
答案 1 :(得分:0)
names = ['Neeraj Kumar', 'Pankaj Sharma', 'Rahul kapoor']
letters = "rkp"
# All lower case to be case insensitive
data = [x.lower() for x in names]
chars = list(letters.lower())
# Result groups collectors
d1,x= [],[]
for item in data:
indexes = [item.find(c) for c in chars if item.find(c) > 0]
d1.append(len(indexes))
for i in range(len(names)):
if max(d1) != 0:
pos = d1.index(max(d1))
x.append(names[pos])
del d1[pos]
del names[pos]
print(x)
这样做更好,因为任何列表数据都不匹配任何不显示的输入字符串字符,所有匹配数据都存储在匹配字符顺序的单个列表中。