Форум сайта python.su
0
Добрый день.
Начал писать тел. справочник, и столкунулся с проблемой, первое это не хочет воспринимать телефон начинающийся с 0, и второе не хочет находить имя и филмилию по номеру.
файл сделан в .csv
Stas;Voron;0631234567 ivan;ivanov;0931234567 vasya;vasya;0661234567
import csv a = int(input('Vvedite nomer ')) reader = csv.reader(open("data2.csv", "rb"), delimiter=';') for row in reader: if a == row[2]: print row[0], row[1] else: print "Phone not found"
python bible3.py Vvedite nomer 0931234567 Traceback (most recent call last): File "bible3.py", line 2, in <module> a = int(input('Vvedite nomer ')) File "<string>", line 1 0931234567 ^ SyntaxError: invalid token
python bible3.py Vvedite nomer 931234567 Phone not found Phone not found Phone not found
Отредактировано stasvoron (Сен. 26, 2014 23:59:42)
Офлайн
857
Используй raw_input()
Офлайн
0
спасибо, помогло, но при этом показывает и две оставншихся строки
python bible3.py Vvedite nomer 0631234567 Stas Voron Phone not found Phone not found
Отредактировано stasvoron (Сен. 27, 2014 03:18:02)
Офлайн
857
stasvoronТам может быть множество таких строк.
как сделать, что бы видело только ту строку с которой совпал номер.
found = False for i in lst: if p(i): found = True print(i) if not found: print('not found')
Отредактировано py.user.next (Сен. 27, 2014 04:54:03)
Офлайн
221
stasvoron
вот код демонстрирующий это
>>> a=08 File "<stdin>", line 1 a=08 ^ SyntaxError: invalid token >>> a=07
>>> print 010 8 >>> print 0x10 16 >>> print 0b10 2 >>> print 10 10
Офлайн
0
сделал вот так.
import csv a = raw_input('Vvedite nomer ') reader = csv.reader(open("data2.csv", "rb"), delimiter=';') name = None for row in reader: if a == row[2]: name = row[0], row[1] if name: print name else: print 'Phone not found'
python bible3.py Vvedite nomer 0631234567 ('Stas', 'Voron')
Vvedite nomer 0931234567 Phone not found
Отредактировано stasvoron (Сен. 30, 2014 00:29:03)
Офлайн
857
stasvoronНаходит только последний из подходящих номеров, тогда как несколько человек могут иметь один и тот же номер.
сделал вот так.
py.user.next
правда теперь выводит с кавычками
>>> t = 'a', 'b' >>> t ('a', 'b') >>> print t ('a', 'b') >>> print '{} {}'.format(*t) a b >>>
Отредактировано py.user.next (Сен. 30, 2014 09:27:50)
Офлайн
0
Да, но у меня в csv файле нет кавычек, все данные написаны в шапке. Опять таки я все же не понимаю почему по номеру из первой строки находит фамилию и имя (первую и вторую ячейку) а по телефону второй или третей стоки не находится соответствующих им ячеек данных
П.с. подскажите где модно подробней почитать про работу с csv и другими подобными библиотеками, а то на вики и офф. Питоне есть только прочитать файл и внести запись в файл. Я про raw тут от вас узнал.
Офлайн
857
stasvoronЭто не из-за csv происходит, а из-за print. Его надо правильно использовать, чтобы он правильно выводил.
Да, но у меня в csv файле нет кавычек
stasvoron
Опять таки я все же не понимаю почему по номеру из первой строки находит фамилию и имя (первую и вторую ячейку) а по телефону второй или третей стоки не находится соответствующих им ячеек данных
list(csv.reader(open("data2.csv", "rb"), delimiter=';'))
stasvoronpython.org. csv. examples
П.с. подскажите где модно подробней почитать про работу с csv
stasvoronЕсли нет разницы, ставь третий питон. Там нет raw_input(), потому что input() и raw_input() превратили в input().
Я про raw тут от вас узнал.
Отредактировано py.user.next (Окт. 1, 2014 00:54:15)
Офлайн
0
import csv >>> list(csv.reader(open("data2.csv", "rb"), delimiter=';')) [['Stas', 'Voron', '0631234567'], ['Ivan', 'Ivanov', '0931234567 '], ['Vasya', 'Vasya', '0661234567 ']]
Отредактировано stasvoron (Окт. 1, 2014 01:41:00)
Офлайн