【发布时间】:2014-07-04 21:25:16
【问题描述】:
我想编写一个接受文件名、列号的函数。这将从 csv 文件中读取并返回列表中指定列的值。我需要用 0 替换空点并在它们存在时跳过标题。我需要一些帮助才能让它工作。谢谢
【问题讨论】:
-
Python 为此提供了一个
csv模块。看看吧!
我想编写一个接受文件名、列号的函数。这将从 csv 文件中读取并返回列表中指定列的值。我需要用 0 替换空点并在它们存在时跳过标题。我需要一些帮助才能让它工作。谢谢
【问题讨论】:
csv 模块。看看吧!
应该这样做
import csv
def get_column(filename, n, header=True):
with open(filename, 'r') as csvfile:
rdr = csv.reader(csvfile)
# skip one row if header is True
if header:
next(rdr, None)
# take only the rows where the field exists
l = [ row[n] for row in rdr if len(row) > n]
return l
列从 0 开始编号,即get_column("mycsv.csv", 0) 将返回第 1 列的内容。
上面的代码只是忽略了所有没有列n 的行。如果您希望它填写默认的 insted,则将列表推导替换为:
l = [ row[n] if len(row) > n else None for row in rdr ]
当然,您可以将None 更改为您需要的任何内容。
最安全的选择就是使用:
l = [ row[n] for row in rdr ]
因为如果该字段连续丢失,它将引发异常。
【讨论】: