我有一個程序,告訴我誰今天會有他們的生日。
我的姓名和生日存儲在一個名爲data.txt
的文本文件中。
這裏是data.txt中的一個樣本:使用迭代器和重新提取特定信息
Master 13/12
Monkey 16/06
Michael 16/06
mike 01/05
Minita 24/06
Mom 12/06
這裏是程序:
from __future__ import print_function
import time
logic = time.strftime("%d/%m")
err_occur = []
pattern = re.compile(logic, re.IGNORECASE)
try:
with open ('data.txt', 'rt') as in_file:
for linenum, line in enumerate(in_file):
if pattern.search(line) != None:
err_occur.append((linenum, line.rstrip('\n')))
for linenum, line in err_occur:
print("Line ", linenum, ": ", line, sep='')
except IOError:
print ("data.txt Not found")
如果我運行這個程序,如果今天的日期是16/06,它的輸出應該是
Line 3: Monkey 16/06
Line 4: Michael 16/06
但是它讓我看到的輸出只能
Line 3: Monkey 16/06
我猜for...in
聲明無效?
它們不應該在循環中工作嗎?
自從我學習python以來只有幾天。我還沒完全理解迭代器。因此,如果你能以外行人的方式解釋我的錯誤,這將非常有幫助。
EDIT-謝謝@zwer指出我的錯誤和@Coldspeed提供更高效的解決方案。
考慮,我將將所有的生日在'data.txt',我不認爲這種方法工作。因此,我建議你將你的第一行改爲's = open('data.txt','rt')。read()'EDIT-我剛剛看到你已經做了 –
@HellfireCharchitPb完成。 –