Если ваш CSV-файл не очень большой, я советую прочитать все целиком, извлекая нужные данные в словарь с номером билета в качестве ключа. Поиск слова очень быстрый.
Я изменил ваш код открытия файла, чтобы использовать оператор with
, который корректно завершается ошибкой, если есть проблема с чтением файла. Кстати, нет необходимости указывать запятую в качестве разделителя CSV, так как это разделитель по умолчанию.
import csv
with open('Path To CSV file', "rb") as f:
data = {line[1]: (line[36], line[37]) for line in csv.reader(f)}
newtickets = raw_input('Enter Ticket Numbers:').split()
for ticket in newtickets:
line = data.get(ticket)
if line:
print(ticket, line)
else:
print(ticket, "not found")
Метод dict.get
возвращает None
, если ключ отсутствует в dict, хотя вы можете указать другое возвращаемое значение по умолчанию, если хотите. Таким образом, мы могли бы переписать эту часть так:
for ticket in newtickets:
line = data.get(ticket, "not found")
print(ticket, line)
В качестве альтернативы, мы могли бы использовать оператор in
:
for ticket in newtickets:
if ticket in data:
print(ticket, data[ticket])
else:
print(ticket, "not found")
Все 3 версии имеют примерно одинаковую эффективность, выберите тот, который вы считаете наиболее читабельным.