使用CSV文件可能没有直接的方法来完成您的请求(除非我误解了您),问题在于,除非文件特别设计为具有固定宽度行,否则任何文件都没有“列”的有意义含义。 CSV文件通常不是这样设计的。 在磁盘上,它们只是一个巨大的字符串:
>>> import csv
>>> with open('foo.csv', 'wb') as f:
... writer = csv.writer(f)
... for i in range(0, 100, 10):
... writer.writerow(range(i, i + 10))
...
>>> with open('foo.csv', 'r') as f:
... f.read()
...
'0,1,2,3,4,5,6,7,8,9\r\n10,11,12,13,14,15,16,17,18,19\r\n20..(output truncated)..
正如您所看到的,列字段没有可预测的对齐方式;第二列从索引2开始,但在下一行中,列的宽度增加了一个,导致对齐出现问题。当输入长度变化时,情况更糟。结果是CSV读取器必须读取整个文件,丢弃您不使用的数据。(如果您不介意,那就是答案-逐行读取整个文件,丢弃您不需要使用的数据。)
如果您不介意浪费一些空间,并知道您的数据不会超过某个固定的宽度,您可以创建一个具有固定宽度字段的文件,然后您可以使用偏移量在其中进行查找。但是,一旦您这样做了,您可能会开始使用真正的数据库。PyTables 似乎是许多人存储NumPy数组的首选。