python csv - 如果第 1 列和第 2 列具有特定值,则打印 CSV 值

我有以下标题的预订 CSV 文件:名字、姓氏、预订日期、主题、课程时间、班级人数


我想阅读 CSV 文件,只打印预订日期为“(特定值)”和课程时间为“(特定值”)的行


到目前为止,我的代码是:


check_date = "11/01/2019"

check_period = "Lesson 3"


with open("Bookings.csv") as f:

    reader = csv.reader(f)


    header = next(reader)

    found = False

    for line in reader:

        if line[2] == check_date and line[4] == check_period:

            for line in reader:

                print(line)

            found = True

            break

    if not found:

        print("No bookings for", check_date, " ", check_period)

但是,不是输出日期为“11/01/2019”且课程时间为“第 3 课”的行 - 而是使用此标准打印第一行,忽略其余行,并在此之后打印下一行。


下面的屏幕截图:(显示代码、输出和 CSV 示例)

http://img4.mukewang.com/61654371000176ff11960614.jpg

元芳怎么了
浏览 185回答 3
3回答

侃侃无极

尝试删除break内部if语句。随着break你停止迭代通过列表,一旦你找到合适的行

Smart猫小萌

您的问题在以下部分:if line[2] == check_date and line[4] == check_period:            for line in reader:                print(line)消除 for line in reader:你试图在没有进一步检查的情况下继续循环你的数据,这也搞砸了你的外循环正如 asmox 所提到的,也删除了break声明
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python