【问题标题】:Python: Setting conditions within if-elif-else blockPython:在 if-elif-else 块中设置条件
【发布时间】:2011-08-15 10:55:26
【问题描述】:

我有以下代码sn-p:

for row in lst:
    if 'Type' in row[0]:
        for col in range(len(row)):
            #do something
    elif (not 'Type' or '') in row[0]:
        for col in range(len(row)):
            #do something
row_count +=1

对于elif (not 'Type' or '') 的第二部分,如果row[0] = '' 为真,我如何不增加row_count 计数器,但在满足row[0] != Type 时增加?我无法将 if-else 块中的计数器条件设置为我在 lst 中逐行扫描,这基本上是从 python 中的 csv 读取器读取的行。

也许我让自己太复杂了? 请给点建议。

[编辑] - 这是实际代码,我使用 xlwt 模块写入工作表。

for row in spamReader:
    if 'Type' in row[0]:
        for col in range(len(row)):
            ws.write(0,col,convert(row[col]),style) 
    elif (not 'Type' or '') in row[0]:
        for col in range(len(row)):
            ws.write(row_count,col,convert(row[col]),style)
    row_count +=1

更多详情: 我有这个 csv 文件,我在其中逐行扫描。无论其第一个值为“类型”的哪一行,我都将其写在另一个 xls 工作表中,以便它成为第一行。否则,它只是继续逐行复制。但是,当该行的第 1 列为空时,即 '',它假定通过/忽略它。

【问题讨论】:

  • 你能把row_count 语句移到if 块中吗?
  • 你想什么时候增加row_count
  • 如果我将row_count 语句移动到块中,我应该在哪个缩进处对齐它?因为,一旦它增加了计数器,下一个块将在do something 语句中使用它。
  • 呃.. (not 'Type' or '') in row[0] 应该是什么意思?除非我忽略了 Python 3.0 的一些新特性,否则 (not 'Type' or '') 的计算结果为 ''。不是吗?
  • 包含“类型”的行不会到达elif,因为它们被前面的if 消耗。如果row[0] 是一个字符串,那么'' in row[0] 总是为真,所以你的elif 条件是一个重言式,elif 相当于普通的else

标签: python if-statement


【解决方案1】:

这个怎么样:

for row in spamReader:
    if row[0] == '':
        continue

    if 'Type' in row[0]:
        row_count = 0
        ... start new worksheet ...

    for col in range(len(row)):
        ws.write(row_count,col,convert(row[col]),style) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 2017-07-03
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多