Найти - Пользователи
Полная версия: поведение for if else
Начало » Python для новичков » поведение for if else
1
mebius01
Добрый день.Как бы так выразится. Есть файл, в нем построчно записаны данные клиентов.
По сути мы должны найти подстроку в строке и вывести строку.
Чтобы не дергать раскладку использую функцию Presence(string). На вход “xthysq”, на выходе “черный”.
DBFile=pwd+'/.script/db/DBFile'
file_to = open(DBFile)
what_to_look=raw_input(': '); what_to_look=unicode(what_to_look, 'utf-8').title().encode('utf-8')
def Presence(string):
	try:
		primary_list=[]
		separator=''
		ls_dic = {'q':'й', 'w':'ц', "e":"у", "r":"к",'-':'-', 
	        "t":"е", "y":"н", "u":"г", "i":"ш", "o":"щ", 
	        "p":"з", "[":"х", "]":"ъ", "a":"ф", "s":"ы", 
	        "d":"в", "f":"а", "g":"п", "h":"р", "j":"о", 
	        "k":"л", "l":"д", ";":"ж", "'":"э", "z":"я", 
	        "x":"ч", "c":"с", "v":"м", "b":"и", "n":"т", 
	        "m":"ь", ",":"б", ".":"ю",' ':' ','Q':"Й", 
	        'W':"Ц", 'E':"У", 'R':"К", 'T':"Е", 'Y':"Н",
	        'U':"Г", 'I':"Ш", 'O':"Щ", 'P':"З", '{':"Х",
	        '}':"Ъ", 'A':"Ф", 'S':"Ы", 'D':"В", 'F':"А",
	        'G':"П", 'H':"Р", 'J':"О", 'K':"Л", 'L':"Д",
	        ':':"Ж", "\"":"Э", 'Z':"Я", 'X':"Ч", 'C':"С", 
	        'V':"М", 'B':"И", 'N':"Т", 'M':"Ь", '<':"Б", '>':"Ю"}
		for i in string:
			if i in ls_dic.keys():
				primary_list.append(ls_dic.get(i))
				sep_string=separator.join(primary_list)
		return sep_string
	except UnboundLocalError:
		return '1'
for i in file_to.readlines():
	if what_to_look in i:
		print i
	elif Presence(what_to_look) in i:
		print i

По идеи, интересуемся по спуску. Если есть “Степан” то вывести все строки с подстрокой “Степан”. Если нет то “Cntgfy” -> “Степан” и так же, вывести все строки с Степаном.
Но почему то так не выходит. По отдельности:
for i in For_file():
	if what_to_look in i:
		print i
и
for i in For_file():
	if  Presence(what_to_look) in i:
		print i
Прекрасно работают. Вместе, работает только блок с Presence(what_to_look).
Простой пример, вместо файла список
w=raw_input('1: ')
q=raw_input('2: ')
l=['qwe','asd','zxc','rty','poi']
for i in l:
	if w in i:
		print i
	elif q in i:
		print i
Конструкция работает, ищет подстроку в строке.
Пока курю литературу, но вроде как, все должно работать… Где откос?
Shaman
# -*- coding: cp1251 -*-
file_to = [u'привет', u'лунатикам']
#what_to_look=raw_input(': ');
what_to_look=unicode(u'ghbd') #.title().encode('utf-8')
def Presence(string):
	try:
		primary_list=[]
		separator=''
		ls_dic = {'q':u'й', 'w':u'ц', "e":u"у", "r":u"к",'-':'-', 
	        "t":u"е", "y":u"н", "u":u"г", "i":u"ш", "o":u"щ", 
	        "p":u"з", "[":u"х", "]":u"ъ", "a":u"ф", "s":u"ы", 
	        "d":u"в", "f":u"а", "g":u"п", "h":u"р", "j":u"о", 
	        "k":u"л", "l":u"д", ";":u"ж", "'":u"э", "z":u"я", 
	        "x":u"ч", "c":u"с", "v":u"м", "b":u"и", "n":u"т", 
	        "m":u"ь", ",":u"б", ".":u"ю",' ':' ','Q':u"Й", 
	        'W':u"Ц", 'E':u"У", 'R':u"К", 'T':u"Е", 'Y':u"Н",
	        'U':u"Г", 'I':u"Ш", 'O':u"Щ", 'P':u"З", '{':u"Х",
	        '}':u"Ъ", 'A':u"Ф", 'S':u"Ы", 'D':u"В", 'F':u"А",
	        'G':u"П", 'H':u"Р", 'J':u"О", 'K':u"Л", 'L':u"Д",
	        ':':u"Ж", "\"":u"Э", 'Z':u"Я", 'X':u"Ч", 'C':u"С", 
	        'V':u"М", 'B':u"И", 'N':u"Т", 'M':u"Ь", '<':u"Б", '>':u"Ю"}
		for i in string:
			if i in ls_dic.keys():
				primary_list.append(ls_dic.get(i))
				sep_string=separator.join(primary_list)
		return sep_string
	except UnboundLocalError:
		return '1'
for i in file_to: #.readlines():
    if what_to_look in i:
        print i
    elif Presence(what_to_look) in i:
        print i
Так всё работает.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB