Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅将所有拆分行中的一个字符串写入文件_Python_Python 2.7 - Fatal编程技术网

Python 仅将所有拆分行中的一个字符串写入文件

Python 仅将所有拆分行中的一个字符串写入文件,python,python-2.7,Python,Python 2.7,我有一个大约80000行的文本文件。我正在尝试执行以下步骤:- 我试图根据它的第一个字符来寻找线条。我能做到 现在我只剩下7500行了 我正在拆分行并显示其line.split()[-2]字符串 我想将这些字符串写入一个文本文件,但我遇到了困难 下面是我的代码,谁能找出我做错了什么 f4 = open("lines.txt") #subroutine to find out number of intervals for i in range(header_lines): for

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

  • 我试图根据它的第一个字符来寻找线条。我能做到
  • 现在我只剩下7500行了
  • 我正在拆分行并显示其
    line.split()[-2]
    字符串
  • 我想将这些字符串写入一个文本文件,但我遇到了困难 下面是我的代码,谁能找出我做错了什么

    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      
    

    忽略
    header\u行上的循环
    以下内容将复制您的代码,而无需每次重新打开
    f5
    文件(每次重新打开时都会清除该文件):

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

    如果需要跳过
    f4
    中的多行(例如存储在
    标题行中的数字),请使用以下命令限制循环:

    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\u行
    行,然后遍历文件的其余部分直到结束。

    范围内i(header\u行)的循环
    应该实现什么?如果不重新打开或倒带到开头,您无法重复读取
    f4
    ,但我从不在循环中使用
    I
    ,因此我怀疑它在这里是完全多余的。1)我正在完全打开文件,在头行之后读取它(假设是15,我正在从第16行读取文件)非常感谢。谢谢你的回答。
    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')