0
我正在嘗試搜索一行中的特定模式。模式來自列表。我嘗試使用以下邏輯,但它的語法錯誤。雖然我不理解原因。有人可以解釋嗎?我在我的代碼下面列出的要求,使用循環和重複搜索模式中的變量在同一行
- 我需要從文件的每一行搜索模式。
- 模式從列表中迭代。
我想啓用模式搜索和遍歷列表中的一行Python代碼,而不是在2行。
import re cell = ['abc', 'def'] line = '/* Begin cell: abc */' for c in cell if re.search(r".*Begin cell.*%s.*" % c, line, re.I): print 'Match'
發現錯誤低於,
File "<ipython-input-47-241664c42555>", line 5
for c in cell (if re.search(r".*Begin cell.*%s.*" % c, line, re.I)):
^SyntaxError: invalid syntax
你可以在列表理解中使用'[... for .... if ...]',理解或生成器表達式,這是OP可能從中選擇了這種語法的地方。它只是不允許在逐行代碼中使用。 – jez
非常感謝您的澄清。這意味着我無法執行搜索操作並在同一行中有一個迭代器。問題的原因是,我有一個大型文件,我需要檢查每行與匹配的字符串列表。我知道大文件只有少數選擇性的地方匹配字符串。通過使用上面的代碼(即遍歷單元格,然後在每行上搜索),我不必要地讀取整個文件並根據模式進行交叉檢查。所以想要避免這種情況來改善運行時間。 – Sreeder
這沒有任何意義。在聲明你想要做的事情和代碼實際做的事情之間,在運行時間中**沒有可能的差異**。無論發生什麼,您都需要遍歷該文件並檢查每一行是否匹配;即使語法允許您在for語句的同一行上執行它,它也不會更改運行時。 –