Сравнение пользовательского ввода со значением csv

#python-3.x

#python-3.x

Вопрос:

Итак, у меня есть эти данные csv

 Medium narrow body, £8, 2650, 180, 8
Large narrow body, £7, 5600, 220, 10
Medium wide body, £5, 4050, 406, 14
  

Данные, которые мне нужно использовать, — это числа справа, которым присвоено имя поля ‘first_class’, а второе справа — имя поля ‘Capacity’
, и я создал этот код

     import csv
    def menu():
        print ("""
             1.Enter airport details
             2.Enter flight details
             3.Enter price plan and calculate profit
             4. Clear data
             5.Quit
                """)
if b == '2':
        a1 = input('Enter the type of aircraft: ')
        airplane_info = open('airplane.csv', 'r')
        csvreader = csv.DictReader(airplane_info,delimiter = ',',fieldnames=('Body_type','Running_cost','Max_flight','Capacity','first_class'))
        for row in csvreader:
            if row['Body_type'] == a1:
                print(row)
    if row['Body_type'] != a1:
        print('Wrong aircraft type')
        flag = False
    else:
        d1 = input('Enter number of first class seats on the aircraft')
        if d1 != 0:          
  

(Этот флаг отправлял пользователя обратно в меню опций, игнорируя его)
Теперь мне нужно использовать тип самолета, который вводит пользователь, и использовать его имя поля first_class с количеством мест первого класса, которые вводит пользователь. Допустим, если пользователь вводит тип самолета «Средний широкий корпус». В нем 14 мест первого класса. Когда пользователю предлагается ввести места первого класса, и в итоге он вводит значение ниже 14, должно появиться сообщение об ошибке. Как бы я это сделал? Могу ли я ввести данные csv в массив, а затем использовать их для сравнения?

Ответ №1:

Вот краткий пример использования библиотеки Pandas. Вам нужно будет установить его:

 pip install --user pandas
  

Используя pandas, вы можете преобразовать csv в объект dataframe, а затем работать с ним по своему усмотрению:

 import pandas as pd

df = pd.read_csv('airplane.csv', names=["Body_type", "Running_cost", "Max_flight", "Capacity", "first_class"])  
a1 = input('Enter the type of aircraft: ')
if a1 in df.Body_type.values:
    body = df[df.Body_type == a1]
    d1 = int(input('Enter number of first class seats on the aircraft: '))
    if d1 < body["first_class"].values[0]:
        print("Error")
    # ...
else:
    print('Wrong aircraft type')