2017-08-29 37 views
-1

我只是想了解以下腳本中的「keys =」代碼行。這個腳本被拉入下面的鏈接中。我只想對該部分發表評論,但我沒有足夠的評論意見。Python:「Key for Key」瞭解

Search Multiple Strings (from File) in a file and print the line

我有一個很難找到什麼「關鍵鑰匙」是文檔。從我發現的,它是字典的一部分,但任何幫助理解該部分將不勝感激。謝謝!

keyfile = "keys.txt" 
testfile = "test.txt" 

keys = [key for key in (line.strip() for line in open(keyfile)) if key] 

with open(testfile) as f: 
for line in f: 
    for key in keys: 
     if key in line: 
      print(line, end='') 
      break 

回答

0

key for key只是與x for x一樣,所以key的變量將具有in關鍵字後面元素的值。整行意味着:沒有換行(strip)的元素不爲空的所有元素(來自文件的行)的列表。

0
keys = [key for key in (line.strip() for line in open(keyfile)) if key] 

被稱爲列表解析(其套一個發生器理解)

內一個逐行讀取一個文件中的行,並刪除空格&換行。

外部迭代器在內部迭代器上進行迭代,只在該值不爲空時才發出值。

總而言之,它會非常高效地創建非空行的列表,因爲內部生成器理解不會創建實際列表,其值會在迭代時進行評估。