2017-10-10 4 views
2

以下は私のコードです。このコードはファイル(compscと呼ばれます)から行を読み込み、そこから\ nを取り除き、それらを配列に入れてランダムに出力し、すでに印刷されている各オプションを削除します。私が知りたいのは、.txtファイルにたくさんの行があるので、配列の特定の行だけを読み込む方法です。だから、それを行うことができるいくつかのコードがありますか、またはreadlines()をどこかに置く必要がありますか? ありがとうございます!Python 3リストから配列に特定の行を追加する方法

import random 
with open("compsc.txt", "r") as ins: 
    qarray = [] 
    for line in ins: 
     line = line.strip() 
     qarray.append(line) 
    print (qarray) 
    loop = 0 
    while loop != 4: 
     newquestion = random.sample(qarray, 1) 
     print (newquestion) 
     qarray.remove(newcard[0]) 
     loop = loop + 1 
+1

..just、返信に感謝を –

答えて

0

行を維持するかどうかを決めるためには、関数を作成する必要があります。

import random 

def line_filter(line): 
    """Return True if you want to keep line, False otherwise.""" 
    ... 

with open("compsc.txt", "r") as f: 
    questions = [line.strip() for line in f if line_filter(line)] 
    random.shuffle(questions) 
    for question in questions[:4]: 
     print(question) 
+0

こんにちはを追加する前にその条件を追加し、配列に行の特定のセットのための条件ものです。特定の行をtrueまたはfalseに戻すには、 'def line_filter(line):'に何を書く必要がありますか? –

+0

それはあなた次第です。行を印刷するかどうかを決める基準があるようです。これらの基準を 'line_filter'に入れなければなりません。行を保持したい場合は、 'True'を返します。それ以外の場合は 'False'を返します。 –

+0

たとえば、 "apple"という単語を含むすべての行を保持する場合は、appleの行を 'return 'にします。 –

0

これは以前このサイトでカバーされていました。簡単に言えば、ファイルが巨大ではない場合、つまりメモリの問題が発生しない場合は、実際にはリードラインを使用できます。また、最適化されたラインキャッシュを調べます。

関連する問題