[英]Iterating over csv.reader() in a pythonic way
我正在開發一個程序,用csv.reader()讀取csv等。 我想在兩個不同的類變量中保存與兩個條件之一匹配的變量。 因為我喜歡編寫列表推導,並且我試圖以更加pythonic的方式編寫我的代碼,我想知道這是否是正確的方法。 csv.reader()似乎是一個生成器對象,因為我只能迭代它一次。 所以對於第二個條件,我第二次創建了reader-object。 這對我來說似乎是一種浪費。 當然,我可以用正常的for循環寫它,如果情況不同。 但是有更多的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和這個文檔https://docs.python.org/3/library/csv.html#csv .Dialect 。
此時可能更准確地將讀者重命名為某些內容,但這只是語義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.