gpt4 book ai didi

python - 访问第 N 行 csv 文件的最佳方法

转载 作者:IT老高 更新时间:2023-10-28 22:14:09 27 4
gpt4 key购买 nike

我必须访问 CSV 文件中的第 N 行。

这就是我所做的:

import csv

the_file = open('path', 'r')
reader = csv.reader(the_file)

N = input('What line do you need? > ')
i = 0

for row in reader:
if i == N:
print("This is the line.")
print(row)
break

i += 1

the_file.close()

...但这感觉不是最理想的。精确编辑:如果文件很大,我不想遍历所有行,也不想将整个文件加载到内存中。

我确实希望像 reader[N] 这样的东西存在,但我还没有找到。

编辑答案:这条线(来自选择的答案)是我正在寻找的:

next(itertools.islice(csv.reader(f), N, None)

最佳答案

您可以使用 enumerate 遍历列表,直到找到正确的行:

for i, row in enumerate(reader):
if i == line_number:
print("This is the line.")
print(row)
break

您还可以使用专为此类场景设计的 itertools.islice - 无需将整个内容读入内存即可访问可迭代对象的特定切片。它应该比遍历不需要的行更有效。

def get_csv_line(path, line_number):
with open(path) as f:
return next(itertools.islice(csv.reader(f), line_number, None))

但是,如果您的 CSV 文件很小,只需将整个内容读入一个列表,然后您就可以使用索引以正常方式访问该列表。这还有一个好处是您可以以随机顺序访问多个不同的行,而无需重置 csv 阅读器。

with open(path) as f:
my_csv_data = list(csv.reader(f))
print(my_csv_data[line_number])

关于python - 访问第 N 行 csv 文件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27307385/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com