我正在创建一个程序,从500k行的文本文件中提取相关信息。
到目前为止我所管理的是从文本文件中获取信息并将其放入一个列表中,每个元素都是一行。
相关文字的格式如下:
*A title that informs that the following section will have the data I'm trying to extract *
*Valuable info in random amount of lines*
*-------------------*
在每个相关的信息部分之间,以相同的方式格式化,但从另一个标题开始,即:
*A title that shows that this is data I don't want *
*Non-valuable info in random amount of lines *
*------------------- *
我设法使用以下代码列出起点的索引:
start = [i for i, x in enumerate(lines) if x[0:4] == searchObject1 and x[5:8] == searchObject2]
但我正努力寻找停止点。我无法使用找到起点时使用的相同方法,因为停止线也出现在非重要信息之后。
我是Python和编程的新手,所以解决方案可能很明显。
答案 0 :(得分:0)
一个简单的解决方案是逐行循环输入文件,并只保留有价值的行。要知道一行是否有价值,我们使用一个布尔变量:
以下是代码(lines
是包含要解析的数据的字符串列表):
bool keep = false;
data = []
for line in lines:
if line == <title of useful section> # Adapt
keep = true
elif line == <end of section> # Adapt
keep = false
else:
if keep:
data.append(line)
如果没有一个案例匹配,那么该行就是两件事之一:
所以它可以被丢弃。
请注意,标题和截面线末尾不会保存。