2016-11-30 2 views
-1

내 프로그램의 일부로 텍스트 파일에서 이름을 입력하고 입력 한 이름이 목록에 있는지 여부를 나타내는 함수에 정렬 된 이름 목록을 전달하고 싶습니다. 이름이 발견되면 그 위치 (즉, 색인)도 인쇄됩니다.Python 3 : 사용자 입력으로 텍스트 파일을 검색 하시겠습니까?

파일 이름은 단지 30 개이지만 두 번째 기능을 실행하면 검색 할 이름을 입력 한 후에 표시됩니다.
이름을 찾을 수 없습니다.
이름을 찾을 수 없습니다.
이름이 검색되었습니다.
이름을 찾을 수 없습니다.
이름을 찾을 수 없습니다.
... 30 개 이름 모두에 대해. 여기

코드입니다 :

def main(): 
    infile = open('names.txt', 'r') 
    line = infile.readline() 

    while line !='': 
     line = line.rstrip('\n') 
     print(line) 
     line = infile.readline() 

    print('\nHere are the names sorted:\n') 

    infile = open("names.txt", 'r') 
    names = infile.readlines() 
    names.sort() 

    for line in names: 
     line = line.rstrip('\n') 
     print(line) 
     line = infile.readline() 
     search_file(line) # I don't this this is the correct way to 
          # pass the sorted list of names? 


def search_file(line): 
    search = open('names.txt', 'r') 
    user_search = input('\nSearch for a name(Last, First): ') 
    #item_index = line.index(search) 
    print() 

    with open('names.txt', 'r') as f: 
     for line in f: 
      if user_search in line: 
       print('name found')#, item_index) 
      else: 
       print('name not found.') 
여기

업데이트 된 코드 : 항상

def search_file(line): 

user_search = input('\nSearch for a name(Last, First): ') 
print() 

try: 
    item_index = line.index(user_search) 
    print(user_search, 'found at index', item_index) 

except ValueError: 
    print('not found.') 

답변

0

그럼 먼저 당신은 단지 당신이 하나를 검색하는 파일을 열고 자하는 것 "을 (를) 찾을 수 없습니다"표시이 시간 시각. 파일의 모든 행을 .readlines()로 목록에로드 할 수 있습니다.이 함수는 각 행의 목록에 문자열을 반환합니다. 그럼 당신은

for l in lines: 
    if (l.find(userstring)>-1): 
     foundvar=True 
+0

나는 "ValueError를 제외하고/시도"사용하여 시도와 각 라인에서 함께 사용자 문자열을 검색 할 수 있지만, 지금은 단지 ValueError를 또는 "을 (를) 찾을 수 없습니다"인쇄 문 –

+0

스물셋겠습니까 @ 인쇄됩니다 새롭고 업데이트 된 코드를 볼 필요가 있습니다. –

+0

원래 게시물에 업데이트 된 부분을 추가했습니다. 용서하십시오, 나는 코딩에 아주 새롭다. –

관련 문제