仅将所有分割线的一个字符串写入文件

时间:2014-03-18 21:54:15

标签: python python-2.7

我有一个大约80000行的文本文件。我正在尝试执行以下步骤: -

  1. 我正在尝试根据其第一个字符找到行。我能够做到这一点。
  2. 现在我剩下了7500行。
  3. 我正在分割线条并显示其line.split()[-2]字符串。
  4. 我想将这些字符串写入文本文件,但我遇到了困难。
  5. 以下是我的代码,任何人都可以弄清楚我做错了什么。

    f4 = open("lines.txt")    #subroutine to find out number of intervals
    for i in range(header_lines):
        for line in f4:
         with open("satsid.txt","w") as f5:
           if line.startswith(" 12"):
              print line.split()[-2]
              f5.write('line.split()[-2]')
              numints = numints+1;
           if not line:
               break      
    

1 个答案:

答案 0 :(得分:0)

忽略header_lines以上的循环,以下内容会复制您的代码,而不会每次重新打开f5文件(每次重新打开时都会清除它):

with open("lines.txt") as f4, open("satsid.txt","w") as f5:
    for line in f4:
        if line.startswith(" 12"):
            f5.write(line.split()[-2] + '\n')

如果行以f5(空格,然后是1,然后是2)开头,则会将行中的1个但是最后一个元素写入' 12'。我在输出文件中的这些值之间添加换行符。

如果您需要在header_lines中跳过多行(比如存储在f4中的数字),请使用itertools.islice()来限制循环:

from itertools import islice

with open("lines.txt") as f4, open("satsid.txt","w") as f5:
    for line in islice(f4, header_lines, None):
        if line.startswith(" 12"):
            f5.write(line.split()[-2] + '\n')

islice()将跳过header_lines行,然后通过文件的其余部分直到结束。