2016-07-20 8 views
0

PythonでDropWhileを使用して実践しています。例えばDropWhileは2つの特定の行の間で抽出します。

これはファイルの行の場合:

Test1 
Test2 
Test3 
Test4 
Test5 
Test6 
Test7 
Test8 
Test9 
Test10 

そして私はTEST5とTEST8の間に線を引き出したいです。

私はこれを別の方法で行う方法を知っています(ファイル内の行...最終行の番号を取得します。行> 5 ...の場合は行< 8 ... print);私は特にDropWhileを使って練習したいと思っています。

私はこれにいくつかの異なる方法を試してみましたが、私はそれを動作させるように見えることはできません。

例えば

これは機能しません。すべての行が出力されます。

私が代わりに別の関数を使用してのdropwhileラインの長いラムダ式を使用しようとしましたが、私はこのようなものでしたときに別の方法:(

for line in dropwhile(lambda line: 5 < int(line.strip()[-1]) < 8, dataset): 

を私は一つだけの式を持っている場合は、このコードが動作するにはつまり、int(line.strip()[ - 1])> 5またはint(line.strip()[ - 1])< 8です。

誰かが私のテストデータセットでTest5とTest8の間の線を引っ張るためにDropWhileを使って私にpythonicの方法を教えてもらえますか?

filter(lambda line: 5 < int(line.strip()[-1]) < 8, dataset) 

状態が1時間に達するとDropWhileが停止しますので、リストはの残りの部分を持っていきます。

答えて

2

DropWhileあなたは、フィルタを使用する必要があり、機能aproachから、あなたが必要なものではありませんあなたがデータセットにdropwhile()を使用する予定がある場合はそれに一度の値は、あなたはまた、次のようにtakewhile()の使用が必要な行をつかむために作成する必要があり、Test6

+1

また、ジェネレータ式を次のように繰り返します。 'for line in(5 jedwards

0

に達する:

それが完了し、その時点で

Test6 
Test7 

をだから、最初だけ必要なエンドポイントまでのラインを取って、必要な開始点までの各ラインを落とし、そして、2つの段階で動作し、:

これはあなたを与えるだろう。

関連する問題