将特定行放入数组中

时间:2013-10-30 17:05:19

标签: python

我有一个类似的文件:

  

0.5 0.5 0.5 0.5

     

1 0.1

     

0.6 0.6 0.6 0.6

     

1 0.2

所以我的问题是我只想要" 0.5"和" 0.6"并将它们放在一个类似于

的数组中
  

0.5 0.5 0.5

     

0.6 0.6 0.6

我该怎么做? 我尝试了几种方法,如readlines和row.split,但我无法获得正确的表单。也许我没有写正确形式的readlines和row.split。

3 个答案:

答案 0 :(得分:2)

嗯,你可以通过遍历所有行来检查行是否以所需变量开头,对于你的情况(text.txt是你假定文件的名称):

with open('text.txt') as f:
    l = [var.rstrip() for var in f if var.startswith(('0.5','0.6'))]
    print(l)

答案 1 :(得分:1)

这些解决方案会在该行的任意位置检查0.50.6,而不仅仅是在开头。

使用str.split

with open('filename') as f:
    lis = []
    for line in f:
       spl = line.split()
       if '0.5' in spl or '0.6' in spl:
           lis.append(line.strip())

regex与字边界一起使用:

import re
with open('filename') as f:
    lis = []
    for line in f:
       if re.search(r'\b(0\.6|0\.5)\b', line):
           lis.append(line.strip())

答案 2 :(得分:1)

这样做:

with open("/path/to/file") as f:
    print [l.strip() for l in f if " 0.5 " in l or " 0.6 " in l]

输出:

['0.5 0.5 0.5 0.5', '0.6 0.6 0.6 0.6']

根据评论进行修改:

请注意,上述解决方案适用于数据是否与给定的数据相同。如果不是,那么你需要一些更强大的东西:

from re import search
with open("/path/to/file") as f:
    print [l.strip() for l in f if search(r"\b0\.[56]\b", l)]

这将匹配字符串中任意位置的"0.5""0.6",并适用于"0.5\n""0.6\n"等案例。