次のようなファイルがあります。
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"ます。