如果 csv 文件在 Python 中只有 1 列,我怎么能不读取它的最后一行?

How can I not read the last line of a csv file if it has simply 1 column in Python?

我有 2 个包含 4 列的 csv 文件。

1 3 6 8\n                 1 3 7 2\n
7 9 1 3\n                 9 2 4 1\n
\n                        1 8 2 3\n

我只想读取至少有 2 列的行,因为只有 \n 的行没有用。

目前,我正在使用这个读取文件:

for line in f:
        list = line.strip("\n").split(",")
        ...

但是,我希望忽略只有 1 列的行。

可以测试剥离空白字符后行的truthy值。空字符串将具有虚假值,您可以通过在 if 块中处理来避免该值:

for line in f:
      line = line.strip("\n")
      if line: # empty string will be falsy
           lst = line.split(",")

要读取两列的行,可以测试拆分后的行的长度:

for line in f:
      row = line.strip("\n").split()
      if len(row) >= 2:
           ...

注意不要在代码中使用名称 list,因为这会影响内置 list 类型。

如果它们是以逗号分隔的合法 csv 文件,请尝试 csv 模块。与其他答案一样,您仍然需要消除空行。为此,您可以测试一个空列表(当在 if 语句中作为表达式计算时,这是一个错误的值)。

import csv

with open('filename.csv' as f):
    reader = csv.reader(f)
    rows = [row for row in reader if row]

rows 现在包含 csv 文件中的所有非空行。

当你打到空白行时,你可以退出循环。

if not line.strip():
    break