在行或两个标记之间提取数字数据行

时间:2014-12-22 01:01:50

标签: python

我正在尝试从文本文件中提取几行数据。该数据集位于两个标记之间(“et 1027”和“t 0”),如下所示:

.... (some data)

et  1027

  0.00000E+00  1.00000E-05  3.00000E-03  6.00000E-03  9.00000E-03  1.20000E-02

  1.50000E-02  1.80000E-02  2.10000E-02  2.40000E-02  2.70000E-02  3.00000E-02

  ...
  ...

t  0

.... some more data

我试图使用以下脚本,但实际上没有用,因为它最终也打印了标记之外的所有数字。我只想打印这两个标记之间的数据线(不包括标记)。这是我失败的剧本。有谁知道如何设置开始和结束标签并打印之间的线?提前谢谢。

import re

file = open ('data.txt', 'r')

for line in file:

   line= line.strip()

   y= re.findall('[0-9]+', line) 

   print y

2 个答案:

答案 0 :(得分:2)

你可以用一种简单的方式做到:阅读文件,直到你遇到第一个标记,然后打印你读到的所有内容,直到你遇到下一个标记

with open('data.txt', 'r') as data:

   line= data.readline()

   while line != 'et 1027':
        line= data.readline()
   else:
        line= data.readline()
        while line != 't 0':
            print y
            line= data.readline()

答案 1 :(得分:1)

你可能想尝试这样的事情

import re

file = open ('data.txt', 'r')

allowed = False

for line in file:
    line= line.strip()
    if line == 'et 1027':
        allowed = True
    if line ==  't 0':
        allowed = False
        break
    if allowed:
        y= re.findall('[0-9]+', line) 
        print y