我制作了一个生成器函数,它使用关键字搜索 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
如果没有与该关键字的联系人,我希望输出是“未找到”的声明。如果有关键字的联系人,它会输出所有列表。
最佳答案
请试试这个
def search(keyword, filename):
f = open(filename, 'r')
for line in f:
if keyword in line:
yield line
else:
yield 'Nothing Found'
f.close()
the_generator = search('Python', 'contacts.csv')
for g in the_generator:
print(g)
“the_generator”是一个迭代对象,“for”循环需要一个迭代对象才能运行。该程序的输出将:
Nothing Found
Nothing Found
Nothing Found
Nothing Found
Nothing Found
Python, 100
关于python - 打印来自 Python 生成器的所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53997073/