嵌套ifs在阅读csv时,是否可以更快地使用它?

时间:2017-07-14 16:04:31

标签: python python-3.x csv nested

嘿,我需要从第1列获取字符串,但如果单元格中的话,那就是' - '程序从下一列(同一行)获取值,好吧我做到了。工作得很好,但它是否可以让它更快,代码更短?我只是很好奇,但想要更快地学习一些东西:)

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 

表格smth:)

,输出

smth1
smth2
smth3
smth4
smth5

1 个答案:

答案 0 :(得分:1)

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

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

如果行中的所有列都是'-'

,您可以添加默认值
...
val = next((x for x in row if x!='-'), '')