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.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())
于 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 に答える