我有一个类似的文件:
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。
我有一个类似的文件:
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。
好吧,您可以通过遍历所有行来执行此操作,并检查这些行是否以您想要的变量开头,对于您的情况(text.txt
是您假定的文件的名称):
with open('text.txt') as f:
l = [var.rstrip() for var in f if var.startswith(('0.5','0.6'))]
print(l)
这些解决方案将在行中的任何位置进行检查,0.5
而0.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())
这样做:
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"