我想从一个长txt文件中获取多个重复行(~20k行)

时间:2018-02-03 11:35:24

标签: python text line

我有一个带有20k +行的长文本文件。有四种不同的模式可以识别我想要写入文件的行的开头。这些行在条目文件中重复。有些行不以其中一种模式开头,这些行应被跳过。我想按顺序从四个模式开始抓取行,并按照与基本文件相同的顺序将它们写入文件输出。

例如:

  

随机文字

     

第一行的具体开始,随机文本A

     

随机文字B

     

第二行的具体开始,随机文本C

     

随机文字D

     

我希望输出看起来像:

  

第一行的具体开始,随机文本A.   第二行的具体开始,随机文本C

我在想reg-exp,但我对它们并不熟悉。我想也许逐行执行的功能可能更好,甚至可能更快。重要的是,我必须保留原始的行顺序。

2 个答案:

答案 0 :(得分:1)

file = open("input_file",r)
outfile = open("out_file",w)
specific_start = ["specific start pattern1","specific start 
pattern2","specific start pattern3","specific start pattern4"]
for line in file:

    if not  line.startswith(specific_start[0],specific_start[1],specific_start[2],specific_start[3]):
         continue
    else:
         outfile.write(line)

答案 1 :(得分:1)

使用字符串方法startswith()来检查行的开头是否符合您的要求。

这将写入input.txt中的所有行,以" aaaa"开头到output.txt:

wanted = "aaaa"

with open("input.txt", "r") as f_in, open("output.txt", "w") as f_out:
    for line in f_in:
        if line.startswith(wanted):
            f_out.write(line)