Ruth Benjamin Marvin Ответов: 2

Как мне найти csv-файл и получить правильный отступ, чтобы это работало


import csv #assuming the file is in csv format, import csv

#Task: Search for a teacher, and return the subject they teach
"""File contents
Mr A : Maths
Mr B: History
Mr C: Computing
"""

def main():
      #open the file
      with open("teacherbook1.csv", "r") as teacherfile:
            teacher=input("Enter teacher you are looking for:")
            teacherfileReader=csv.reader(teacherfile)
            for row in teacherfileReader:
                  for field in row:
                        if field==teacher:
                              print(row[1])
                              break
                        else:
                              main()



main()


Что я уже пробовал:

Почти работает..

ток на выходе:

Enter teacher you are looking for:Mr A
Philosophy
Enter teacher you are looking for:Mr B
Enter teacher you are looking for:Mr C
Enter teacher you are looking for:Mr X
Enter teacher you are looking for:

2 Ответов

Рейтинг:
11

Richard MacCutchan

Вы перезапускаетесь с самого начала, если поле учителя не является запрошенным. Поэтому, если вы введете "Мистер В "или" мистер С", они никогда не будут найдены. Вам нужно удалить else заявление и откорректировать следующую строку (main()) на тот же уровень, что и with заявление в самом начале.


Ruth Benjamin Marvin

Просто хотел проверить, работает ли codeproject так же с той же скоростью отклика, что и stackoverflow, - пока впечатлен! Спасибо!

Richard MacCutchan

Разумные и информативные вопросы, как правило, получают один и тот же тип ответов.

Рейтинг:
1

Jochen Arndt

Символ ':' не является разделителем полей CSV по умолчанию. Если ваш файл использует это, вы должны указать его в качестве параметра для reader функция:

teacherfileReader = csv.reader(teacherfile, delimiter=':')

Смотреть также 14.1. CSV — файл CSV чтения и письма — документации Python 3.6.2 [^].