2011-03-15 7 views
0

나는 사람 이름의 글자 중 일부 또는 전부를 사용하고 이름과 길이가 같은 모든 단어를 찾기 위해 파일을 검색하려고합니다. 나는 파일을 가져 왔으며 열 수 있고 기타 등등 읽을 수 있지만 지금은 지정된 문자가 포함될 단어에 대한 파일을 검색 할 수 있기를 원합니다. 단어는 사람 이름과 동일한 길이 여야합니다.파이썬으로 검색하기

+0

모든 문자가 사람의 이름에서와 동일한 주파수에서 발생 하는가? –

답변

0

나는이 문제를 이런 식으로 접근하는 것입니다 : 첫 번째의 길이와 다른 길이의 말씀 밖으로

  • 필터를 이름,
  • 나머지 단어에 대해 반복하여 이름의 문자와 단어의 문자가 공백이 아닌지 확인합니다 (여기서 set이 유용 할 수 있음).

P. 그것은 당신의 숙제입니까?

+0

PS-RE : 그 것처럼 들리지만 그렇지 않습니다. ;) –

1
def find_anagrams_in_file(filename, searchword): 
    import re 
    searchword = searchword.lower() 
    found_words = [] 
    for line in open(filename, 'rt'): 
     words = re.split(r'\W', line) 
     for word in words: 
      if len(word) == len(searchword): 
       tmp = word.lower() 
       try: 
        for letter in searchword: 
         idx = tmp.index(letter) 
         tmp = tmp[:idx] + tmp[idx+1:] 
        found_words += [word] 
       except ValueError: 
        pass 
    return found_words 

실행 그래서 (파이썬 3) :

>>> print(find_anagrams_in_file('apa.txt', 'Urne')) 
['Rune', 'NurE', 'ERUN']