【发布时间】:2016-10-28 03:23:10
【问题描述】:
所以我有一个文本文件,我试图在 python 中使用 csv 读取,但是我只想要以某些字符串开头的两行之间的行。我只是读取数据没有问题,我有:
import csv
with open('path to file','r') as inf:
reader = csv.reader(inf, delimiter=" ")
为了获取所有数据,我可以循环并附加到一个列表中:
raw_data=[]
for row in reader:
raw_data.append(row)
我知道我可以通过执行以下操作获得我想要的行:
for row in raw_data:
if row[0] == 'string1':
begin_idx = raw_data.index(row)
elif row[0] == 'string2':
end_idx = raw_data.index(row)
data=[]
for idx in range(begin_idx+1,end_idx):
data.append(raw_data[idx])
但是,当我第一次遍历文本文件时,我希望能够一次完成所有这些操作,因此,如果有人对如何完成此操作有任何想法,将不胜感激。
注意,我不只是在寻找我想要的行的索引的原因是因为它们只是一个整数列表,每次我运行它都会改变。我运行的 pdf 到文本的转换不是很干净,所以行标题与行的实际数据不一致。
【问题讨论】:
-
Aside:您的第二个代码 sn-p 可以等效为:
raw_data = list(reader)。 -
你也可以用
data = raw_data[begin_idx + 1, end_idx]代替最后一个循环。