我需要过滤文本文件的内容

时间:2019-10-20 13:25:28

标签: python python-3.x

我有一个文本文件,我想循环遍历,切一些内容并存储在单独的列表中。文本文件包含:

blu sre
before we start
start the process
blah blah
blah blha
end the process
blah böah
start the process
blah blah
blah blha
end the process
start the process
blah blah
end the process
blah

我想捕获'start the process''end the process'之间的所有文本并将其存储在新列表中,以便列表的每一行将包含在开始过程和结束过程之间的所有文本。 所需的新列表应该是这样

list[0] start the process  
blah blah  
blah blha  
end the process   
list[1] start the process  
blah blah  
blah blha  
end the process   
list[2] start the process  
blah blah  
end the process  

这是我准备的代码。我不为什么它没有给我所需的结果。

list = []
text = 'start the process'
text2 = 'end the process'
for pattern in range (len(file)):
    if text in file[pattern]:
        x = pattern
    if text2 in file[pattern]:
        y = pattern
    list[i]= file[x:y]
 i = i+1

2 个答案:

答案 0 :(得分:0)

正则表达式就是为此而构建的。

import re

part = re.compile(r"start the process(.*?)end the process", flags=re.DOTALL)
wirh open("my_file.text", "r") as file:
    data = file.read()

results = list(part.findall(data))

基于@Xosrov注释的EDIT更新代码

答案 1 :(得分:0)

@Florian Bernard等人

我在处理数据框时,我的要求有所改变。 我想遍历数据帧并按条件对数据进行切片,并将所有起始值和终止索引之间的所有值存储在数组或新数据帧的第一行中。 因此,如果我的开始和停止出现4次,则它们在我的数组或数据帧中应为4行。

NB。我的数据框只有一列文字

这是我完成的一些代码

corpus = []
count = 0  
for index,row in df.iterrows():
    if df['row'].str.match('start'):
        start = index
    if df['row'].str.match('stop'):
        stop = index
    corpus[count] = df.loc[start:stop]  
    count += 1