嵌套ifs在阅读csv中,是否有可能使它更快?

问题描述:

嘿我需要从第1列中获取字符串,但是如果单元钱币' - '程序从下一列(同一行)获取值并确定我做到了。工作正常,但它使得它更快,代码更短?我只是好奇,但想学东西更快地工作:)嵌套ifs在阅读csv中,是否有可能使它更快?

import csv 

file = 'others.csv' 
reader = csv.reader(open(file, 'r', newline=''), delimiter=';') 

for row in reader: 
    if row[0] != '-':        #1 
     print(row[0])        
    elif row[0] == '-': 
     if row[1] != '-': 
      print(row[1])   #2 nesting here 
     elif row[1] == '-': 
      print(row[3]) #3 nesting here 
... 
... 
... 

和样品的.csv

col1 col2 col3 col4 
0 smth1 smth smth smth 
1 smth2 -  smth smth 
2 -  smth3 smth smth 
3 smth4 smth smth smth 
4 -  -  -  smth5 

表不便:)

和输出

smth1 
smth2 
smth3 
smth4 
smth5 

您可以通过在01上调用next来读取该行,直到您达到非'-'值过滤的行:

for row in reader: 
    val = next(x for x in row if x!='-') 
    print(val) 

你可能的情况下,该行的所有列中添加默认是'-'

... 
val = next((x for x in row if x!='-'), '') 
+0

有一个与所有的行没有lolumns - 一旦必须发生不便 – MTG

+0

你能解释我简单的xD吗? – MTG

+0

@MTG那么你没事没有第二部分 –