2014-12-23 2 views
-1

매트릭스에서 단어를 검색 할 함수를 작성해야합니다. 잠시 동안 나는 단어가 거기에 있는지보기 위해 줄 단위로 검색하려고 노력하고있다. 이것은 내 코드입니다.매트릭스에서 검색 - 파이썬

def search(p): 
    w=[] 
    for i in p: 
     w.append(i) 
    s=read_wordsearch() #This is my matrix full of letters 
    for line in s: 
     l=[] 
     for letter in line: 
      l.append(letter) 
      if w==l: 
       return True 
      else: 
       pass 

이 코드는 내 단어가 줄의 첫 번째 위치에서 시작하는 경우에만 작동합니다. 나는 단어를 찾아 "비행"하지만 내 코드는 "여기"또는 같은 단어를 찾기 위해 작동하기 때문에 그들이 시작 "그녀의"할 수 없기 때문에 할

[[a,f,l,y],[h,e,r,e],[b,n,o,i]] 

: 예를 들어

나는이 행렬을 줄의 첫 번째 위치에 ...

도움, 힌트, 조언의 모든 형태는 인정 될 것입니다. (내 영어가 나쁜 경우 죄송합니다.)

+0

문자열을 문자열로 변환 한 후 찾으시겠습니까? – Trilarion

+0

이제 다양한 솔루션을 선택 했으므로 선택하십시오. – Matthias

답변

1

행렬의 각 행을 문자열로 변환하고 그 행에서 검색 작업을 찾으십시오. 내부 목록에

def search(p): 
    s=read_wordsearch() 
    for line in s: 
     if p in ''.join(line): 
      return True 
+1

꽤 맑은 용액. – Matthias

0

텍스트 내에서 단어를 검색 할 수있는 팁을 알려 드리겠습니다. 나는 당신이 당신의 데이터 매트릭스를 외삽 할 수있을 것이라고 생각한다.

s = "xxxxxxxxxhiddenxxxxxxxxxxx" 
target = "hidden" 
for i in xrange(len(s)-len(target)): 
    if s[i:i+len(target)] == target: 
     print "Found it at index",i 
     break 

당신이 가능한 솔루션의 목록을했다 아마도 경우, 모든 길이의 단어를 검색 할 경우

s = "xxxxxxxxxhiddenxxxtreasurexxxxxxxx" 
targets = ["hidden","treasure"] 
for i in xrange(len(s)-1): 
    for j in xrange(i+1,len(s)): 
     if s[i:j] in targets: 
      print "Found",s[i:j],"at index", 
+0

이것은 이전 Java 또는 PHP 개발자가 작성한 Python과 유사합니다. – Matthias

0
def search(p): 
    w = ''.join(p) 

    s=read_wordsearch() #This is my matrix full of letters 
    for line in s: 
    word = ''.join(line) 

    if word.find(w) >= 0: 
     return True 
    return False 

편집 : 가능한 문자열 함수의 많은 파이썬에 이미있는 . 문자열을 사용해야 만 사용할 수 있습니다.

0

join 문자가 단어를 만들고 in으로 검색 할 수 있습니다.

def search(word, data): 
    return any(word in ''.join(characters) for characters in data) 

data = [['a','f','l','y'], ['h','e','r','e'], ['b','n','o','i']] 
if search('fly', data): 
    print('found') 

data

characters 각 개별 내부리스트의 이름, 매트릭스를 포함한다. any은 첫 번째 일치 (단락)가 발견 된 후 중지됩니다.

관련 문제