我必须解析csv文件,文件中的第一个有用信息位于第3行和第2列。
这是我到目前为止所做的一小部分:
f = open(filename, r)
reader = csv.reader(f, delimeter=';')
i=0
for row in reader:
if (i == 2):
useful_data = row[2]
break
else:
i += 1
但我不喜欢这种方法。任何人都可以提出更好的方法吗?
答案 0 :(得分:4)
itertools.islice
可以简化这里:
with open(filename) as f:
reader = csv.reader(f, delimiter=';')
useful_data = next(islice(reader, 2, None))[2]
答案 1 :(得分:2)
而不是for
循环,而不是break
,而是使用next
只需在csv阅读器上使用next
跳过尽可能多的行,然后最后一次使用next
并选择所需的列:
with open(filename) as f:
reader = csv.reader(f, delimiter=';')
# skip 2 rows
for _ in range(2):
next(reader)
useful_data = next(reader)[2]
答案 2 :(得分:0)
你到底不喜欢什么?我认为一个稍微好一点的版本是:
with open(filename, 'r') as f:
reader = csv.reader(f, delimiter=';')
for i, row in enumerate(reader):
if i == 2:
useful_data = row[2]
break