从Python的CSV读取器中按特定行下标获取数据?

8 投票
1 回答
3276 浏览
提问于 2025-04-16 01:03

我想通过CSV读取器访问CSV文件中的特定行,比如第四行。请问使用Python的CSV读取模块,有办法做到这一点吗?

1 个回答

4

你只需要解析整个CSV文件,然后用正常的顺序索引就可以了。

另外,你也可以这样做:

def my_filter(csv_file, lines):
   for line_number, line in enumerate(csv_file):
       if line_number in lines:
          yield line

my_file = open("file.csv")
my_reader = csv.reader(my_filter(my_file, (3,)))

需要注意的是,你无法避免解析整个文件,因为每一行的长度是不一样的。只有当找到一个换行符('\n')时,行数才会增加,而这个换行符必须一个字符一个字符地去找。

此外,如果你的CSV文件中有引号里面的换行符,这个过滤器就不管用了——其实你最好还是把整个文件解析成一个列表,然后从中获取索引:

my_file = open("file.csv")
my_reader = csv.reader(my_file)
my_line = list(my_reader)[3]

更新
最重要的是:如果你需要随机访问一些太大而无法放进内存的信息,考虑把它存到一个SQL数据库里。这样可以省去很多不必要的麻烦。

撰写回答