从CSV中读取,将列表值与CSV列进行比较

时间:2019-01-22 12:58:15

标签: python csv

我正在创建一个房间预订系统。我程序的第一部分接受用户输入日期,课程时间和班级人数。

获取班级人数,并将其与在列表中输出的CSV文件进行比较,列表中列出了班级可以容纳的房间-可以正常工作。

然后,我的代码的下一部分采用日期和课程时间段,在预订CSV中查找用户输入的日期(他们希望预订的日期)和课程时间段(他们希望的时间)预订)匹配预订CSV中的“日期” /“上课时间”列,查找这些房间所在的房间,然后从建议的房间列表中删除这些已录取的房间,改为可以实际预订的房间。到目前为止,我的代码是:

check_date = "12/01/2019"
check_period = "Lesson 3"

check_room = "G11"

list1 = listSuitableRooms
print(list1)

with open("Bookings.csv") as f:
    reader = csv.reader(f)
    header = next(reader)

for line in reader:
    for i in range(1, len(list1)):
        if line[2] == check_date and line[4] == check_period:
            if list1[i] == line[6]:
                print("bookings:")
                print(line)
                print()
                print("rooms that fit are:")
                list1.remove(list1[i])
                print(list1)


            else:
                print("rooms available are:")
                print(list1)

,但是它忽略了列表的条件,并且没有删除繁忙的房间。最好不要使用熊猫-我只需要导入CSV。

1 个答案:

答案 0 :(得分:0)

列名中可能会有空格,并且范围应从0开始。

with open("/tmp/Bookings.csv") as f: 
    reader = csv.reader(f) 
    header = next(reader) 

    for line in reader: 
        for i in range(0, len(list1)): 
            if line[2].strip() == check_date and line[4].strip() == check_period: 
                if list1[i] == line[6].strip(): 
                    print("bookings:") 
                    print(line) 
                    print() 
                    print("rooms that fit are:") 
                    list1.remove(list1[i]) 
                    print(list1) 
                else: 
                    print("rooms available are:") 
                    print(list1)