2013-03-29 4 views
0

Я до сих пор довольно новичок в python, и у меня возникают проблемы с получением «идеального результата» из моего сценария.Python Получение смешанных результатов.

Вот мой код до сих пор:

#import urllib2 
#file = urllib2.urlopen('https://server/Gin.txt') 
Q = raw_input('Search for: ') 

if len(Q) > 0: 
     for line in open('Gin.txt'): #Will be corrected later.. 
       if Q.lower() in line.lower(): 
         print line 

       #print "Found nothing. Did you spell it correct?" ## problem here. 
else: 
     os.system('clear') 
     print "You didn't type anything. QUITTING!" 

Теперь код работает. Он находит то, что я ищу, однако, если он не находит соответствия. Я хочу, чтобы он печатал «ничего не нашел ...» У меня есть все виды результатов, сочетание совпадающих ложноположительных результатов и т. Д. Почти все, кроме желаемого результата. Это, вероятно, кусок пирога для большинства из вас, но я был в это 8 часов, так что теперь я здесь.

Если есть более оптимальный/более простой/красивый способ его написания, не стесняйтесь исправлять свои ошибки. Я стремлюсь к совершенству! Поэтому я все глаза и уши. FYI. gin.txt содержит почти все из !#_'[] 0..9 заглавных букв

ответ

4

for петля имеет положение else:. Это выполняется, когда вы не конец петли рано:

for line in open('Gin.txt'): #Will be corrected later.. 
    if Q.lower() in line.lower(): 
     print line 
     break 
else: 
    print "Found nothing. Did you spell it correct?" 

Обратите внимание на break; путем разрыва петли for, else: комплект не выполнен.

Это будет, конечно, остановка в первом матче. Если вам нужно найти несколько совпадений, единственным вариантом является использование той или иной форме переменной флага:

found = False 
for line in open('Gin.txt'): #Will be corrected later.. 
    if Q.lower() in line.lower(): 
     found = True 
     print line 

if not found: 
    print "Found nothing. Did you spell it correct?" 
+0

(+1) Стоит отметить, однако, что это не соответствует коду OP, если есть несколько совпадений. – NPE

+0

@Martijn Спасибо за ваш ответ. Короткие и просто то, что мне нужно. – jacko

Смежные вопросы