【发布时间】:2019-01-01 16:29:13
【问题描述】:
我制作了一个生成器函数,它使用关键字搜索 csv 文件,如果有什么我想打印结果。如果不一遍又一遍地使用 print(next(gen_results)) 我怎么能做到这一点?
我已经为 stopIteration 尝试了 try-catch 语句,当没有关键字与联系人匹配但我想要更简洁的解决方案时。
def search(keyword, filename):
f = open(filename, 'r')
for line in f:
if keyword in line:
yield line
f.close()
the_generator = search('Python', 'contacts.csv')
print(next(the_generator))
print(next(the_generator))
contacts.csv
Name01, 89888
Name02, 8885445
Name03, 54555
Name04, 55544584
Name05, 55855
Python, 100
BigPi, 444
Python, 101
如果关键字没有联系人,我希望输出是“未找到任何内容”的语句。如果有关键字的联系人,它会输出所有列表。
【问题讨论】:
-
for 循环?列出分解?
print( *the_generator,sep="\n") -
@DavisHerring 在这种情况下.. 更多的是生成器分解,然后是列表分解。请参阅stackoverflow.com/questions/6319612/python-decompose-a-list - 绝对不是列表理解。
-
@PatrickArtner:好的——这似乎被称为“unpacking”,但我可能会说“扩展”以避免与
a,b=f()混淆(我有时又称之为“分解”)。
标签: python python-3.x generator