如何用Python更优地读取CSV文件第3行第2列的数据?
嘿,我完全懂你为啥嫌弃这种靠计数器循环的写法——确实不够优雅,还容易出错。咱们来搞几个更Pythonic、更简洁的方案:
方案1:用itertools.islice精准定位(推荐)
这个方法最直接,因为csv.reader是迭代器,islice可以帮我们直接跳过前面不需要的行,精准拿到目标行:
import csv from itertools import islice with open(filename, 'r') as f: reader = csv.reader(f, delimiter=';') # 跳过前2行(第3行的索引是2,从0开始计数),只取这一行 target_row = next(islice(reader, 2, 3)) # 注意:第2列对应的索引是1(列也是从0开始的) useful_data = target_row[1]
这里用with语句自动管理文件,不用手动关闭,比直接open更安全;而且islice的写法清晰明了,一眼就能看出我们要跳过多少行、取哪一行。
方案2:用next()手动跳过行
如果不想引入itertools,直接用next()也能搞定,写法同样简洁:
import csv with open(filename, 'r') as f: reader = csv.reader(f, delimiter=';') # 跳过前2行 for _ in range(2): next(reader) # 此时reader的指针已经指向第3行,直接取对应列 useful_data = next(reader)[1]
另外提几个你原代码里的小细节问题:
open(filename, r)里的r要加引号,应该是'r'delimeter拼写错啦,正确的是delimiter- 你说有效信息在第3行第2列,但原代码取的是
row[2],这是第3列(因为列索引从0开始),如果确实是第2列的话,要改成row[1]哦~
内容的提问来源于stack exchange,提问作者ggulgulia
相关产品推荐
相关产品推荐

