我有一个类似的文件:
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 :(得分: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.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())
答案 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"
等案例。