【问题标题】:What function is used to iterate through a list of lists and only print specific rows to the console?什么函数用于遍历列表列表并仅将特定行打印到控制台?
【发布时间】:2021-08-08 20:12:50
【问题描述】:

对于 Python 作业的最后一部分,我需要遍历列表并将类别为“硬件”的行打印到控制台。这是 csv 文件:

Hardware,Hammer,10,10.99
Hardware,Wrench,12,5.75
Food,Beans,32,1.99
Paper,Plates,100,2.59

下面是最后一部分的代码,简单的打开要读取的文件,传入一个列表:

def read_text():

    with open("products.csv", "r", newline="") as file:
        reader = csv.reader(file)
        temp_prod = list(reader)

我在编码正确的 for 循环以提取“硬件”行时遇到问题。帮助将不胜感激!谢谢。

【问题讨论】:

  • Stack Overflow 并非旨在取代现有的文档和教程。您需要重复使用列表(和字符串)的材料。查找in 运算符。使用if "Hardware" in row 之类的东西,其中row 是文件的单行/列表。
  • 对不起,你读过我的问题吗?我并不想更换任何东西。只是正确的 for 循环或搜索功能,它将拉出我想要的两行并将它们打印到控制台。我已经阅读了文档,目前我并不清楚,因此我在这里寻求帮助。谢谢!
  • 是的,我读到了你的问题。您不知道如何在文件上编写循环或理解。您不知道如何编写过滤器。网络上的文档和示例很好地涵盖了这些项目。因此,教你这些东西适合教程或本地导师——而不是 Stack Overflow。见How much research?
  • 当您同时阅读所有内容时,请尝试hardware = list(zip(*temp_prod))[0]

标签: python list csv for-loop module


【解决方案1】:

当您遇到困难时,请尝试进行大量打印以查看发生了什么。你的情况很好。 temp_prod 给了你一个列表列表。您必须遍历此列表并询问第一项是否等于您的搜索条件。

你的代码应该是这样的:

def read_text(my_file):
    import csv
    with open(my_file, "r", newline="") as file:
        reader = csv.reader(file)
        temp_prod = list(reader)
        for row in temp_prod:
            if row[0] == "Hardware":
                print(row)

这样调用函数:

read_text("filepath.csv")

请注意,此函数(根据您的要求)不会返回任何内容,只会打印。

【讨论】:

    猜你喜欢
    • 2021-07-10
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 2015-10-27
    • 2020-10-14
    • 1970-01-01
    相关资源
    最近更新 更多