python - 打印来自 Python 生成器的所有结果

标签 python python-3.x generator

我制作了一个生成器函数,它使用关键字搜索 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/

相关文章:

python - 在标签中查找字符串而不在 python 中找到标签

python - numpy中的随机值在哪里

python - 使用不同的参数同时运行相同的函数

boost - 将 boost 随机数生成器与 OpenMP 结合使用

python - openCV python 根据边问题查找轮廓

python - Paypal 为 IPN 发送了警告邮件

audio - SDL音频问题(无输出)

javascript - 有没有办法从多层函数或内部函数中产生变量?

python - 如何通过python中的pandas导出到单个csv文件的多个excel表

python - 标记化单词列表