텍스트 조각과 일치하는 항목을 목록 (DB)으로 검색하려고합니다. 예를 들어, 텍스트 "악마"가있는 DB가 있습니다. 나는 사용자 입력을 사용하여 DB에서 가능한 모든 일치 항목을 검색하고 자신감을 가지고 답변을 제공하려고합니다. 사용자가 "hello"를 입력하면 가능한 일치 항목이 없습니다. 사용자가 "악마"를 입력하면 가능한 일치는 57 %의 신뢰도 (7 자의 알파벳 중 4 개)와 같은 악마입니다.파이썬 목록에서 불연속 문자를 검색하는 방법은 무엇입니까?
그러나 "evxxman"과 같은 입력 텍스트를 일치시키는 방법을 원합니다. evxxman의 7 문자 중 5 문자가 DB의 "evilman"텍스트와 일치합니다. 그러나 파이썬에서의 간단한 검사는 연속적으로 일치하는 텍스트 만 출력하기 때문에 일치하지 않는다고 말할 수 있습니다. 나는 그것이 의미가 있기를 바랍니다.
에 따라 감사
내 코드입니다 : 품질 추정과 일치를 찾는db = []
possible_signs = []
db.append("evilman")
text = raw_input()
for s in db:
if text in s:
if len(text) >= len(s)/2:
possible_signs.append(s)
count += 1
confidence = (float(len(text))/float(len(s))) * 100
print "Confidence:", '%.2f' %(confidence), "<possible match:>", possible_signs[0]
두 개의 for 루프를 가질 수 없습니까? 하나는 사용자 입력을 반복하고 다른 하나는 "evilman"을 통과 할 수 없으며 for 루프는 한 번에 하나의 문자를 가지며 inner for 루프의 모든 문자와 검사합니다 if 일치하면 카운터에 추가됩니다. 그러나 이것은 중복을 고려하지 않을 것입니다. 난 그냥 각 문자의 ascii 값을 기반으로 두 문자열을 정렬하고 똑바로 당신이 얼마나 많은 일치를 볼 수 비교할 수 있습니다. –
evilman은 aeilmnv이고 사용자 입력은 ehllo 로의 hello 변경이며 e가 아닌 e와 e를 비교하고 e와 일치하면 eeilmnv 목록에서 e를 제거하고 ailmnv로 만들고 루프가 h로 이동합니다 그리고 계속해라. –
@ Omid-CompSCI 문자열의 정렬을 원하지 않을 것입니다. 왜냐하면이 질문의 중요한 부분은 불연속 적이지만 순서가 정해져 있다고 생각하기 때문입니다. 그래서 "EILV"는 그의 스펙에 따라 "EVIL"과 일치하지 않을 것이지만 그것은 당신의 제안에 있습니다. – Caius