2017-10-10 46 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

什麼是特定線條陣列的條件,只是在追加 –

回答

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

之前添加該條件您好,感謝您的答覆。我需要在'def line_filter(line):'中返回一個特定的行是true還是false? –

+0

這取決於你。您似乎有一些標準來決定是否要打印一行。你必須把這些標準放在'line_filter'中。如果您想保留該行,請返回「True」。否則返回'False'。 –

+0

例如,如果你想保留所有包含單詞「apple」的行,你可以將'return'apple'放入行中' –

0

此網站已被覆蓋此前。簡而言之,如果您的文件不是很大,即不會導致內存問題,那麼您確實可以使用readlines。也看看優化後的linecache。

相關問題