0

我有一个类似的文件:

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。

4

3 回答 3

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)
于 2013-10-30T17:09:41.887 回答
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())
于 2013-10-30T17:07:51.510 回答
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"

于 2013-10-30T17:09:41.720 回答