如果 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
我有 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