gpt4 book ai didi

python - 以 pythonic 方式迭代 csv.reader()

转载 作者:行者123 更新时间:2023-11-28 16:59:43 25 4
gpt4 key购买 nike

我正在开发一个程序,该程序使用 csv.reader() 读取 csv 等内容。我想在两个不同的类变量中保存与两个条件之一匹配的变量。因为我喜欢编写列表推导式并且我正在尝试以更 Pythonic 的方式编写我的代码,所以我想知道这是否是正确的方法。 csv.reader() 似乎是一个生成器对象,因为我只能迭代一次。所以对于第二种情况,我正在第二次创建读者对象。这对我来说似乎是一种资源浪费。当然,我可以用普通的 for 循环和不同的 if 情况来编写它。但是有没有更 pythonic 的方式来编写这段代码?

with open(file, "r") as f:
reader = csv.reader(f, delimiter=",")
self.xitireq = [row[0] for row in reader if "xiti" in row[0]]
with open(file, "r") as f:
reader = csv.reader(f, delimiter=",")
self.apireq = [row[0] for row in reader if "https://www.blabal.de/api" in row[0]]

如果我这样写代码,self.apireq 是空的:

with open(file, "r") as f:
reader = csv.reader(f, delimiter=",")
self.xitireq = [row[0] for row in reader if "xiti" in row[0]]
self.apireq = [row[0] for row in reader if "https://www.blabal.de/api" in row[0]]

最佳答案

我能想到的最简单的解决方案就是按照你想要的方式去做

with open(file, "r") as f:
reader = list(csv.reader(f, delimiter=","))
self.xitireq = [x for x in reader if "xiti" in x]
self.apireq = [x for x in reader if "https://www.blabal.de/api" in x]

这里唯一的区别是我根据这篇文章 Python import csv to list 使用 list() 将您的阅读器转换为列表。和这份文件 https://docs.python.org/3/library/csv.html#csv.Dialect .

此时将 reader 重命名为某物可能更准确,但这只是语义。

关于python - 以 pythonic 方式迭代 csv.reader(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55382666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com