从txt文件中读取表的大块

时间:2014-06-20 08:58:12

标签: python

我有一个文本文件,其中包含如下表格。来自其他文本的部分对我来说不是很感兴趣。

TMP   [%]        [KT]      [1/dm]      [SF]   
1    0.10020    -0.0000      -60.0     0.0000
2   14.12826     0.0000        0.0     0.0000
3    4.00802  -120.3636       -6.0   191.5646
4    4.80962     0.0000        0.0     0.0000
   .....

我想只提取文本的这一部分,只提取前3列。我写了一个类似的代码:

import codecs
f = codecs.open("dmp.txt", "r",'utf-16-le')
fr = f.readlines()
f.close()
for line in fr:
  if line.startswith("TMP")...

但是,我无法弄清楚如何逐列读取此数据,而只能读取前三列。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

for line in fr: 
    v = line.split()
    print " ".join(v[:3])

给出:

TMP [%] [KT]
1 0.10020 -0.0000
2 14.12826 0.0000
3 4.00802 -120.3636
4 4.80962 0.0000

答案 1 :(得分:0)

您可以使用正则表达式:

import codecs
import re
f = codecs.open("dmp.txt", "r",'utf-16-le')
fr = f.readlines()
f.close()
for line in fr:
    if not line.startswith('TMP'):
        print re.findall('-?[0-9]+\.?[0-9]*', line)[:3]

这将输出:

['1', '0.10020', '-0.0000']
['2', '14.12826', '0.0000']
['3', '4.00802', '-120.3636']
['4', '4.80962', '0.0000']

答案 2 :(得分:0)

with open("dmp.txt") as f:
    f.next()
    for x in range(4):
        lines += f.next().split()[0:3]
    print lines

['1', '0.10020', '-0.0000', '2', '14.12826', '0.0000', '3', '4.00802', '-120.3636', '4', '4.80962', '0.0000']