for Python中的循环并从文件

时间:2015-11-19 18:29:43

标签: python python-3.x if-statement for-loop

我试图找出为什么我会为 else 语句获得多个返回结果。 我想从一个文件中读取。用户将输入内容 如果那个东西与文件中的单词或句子/数字相匹配 打印出那条线。如果在文件中找到 这个单词,它可以正常工作。文件 内容打印出文档中匹配的单词。 但我的问题涉及其他声明。如果单词不在文档中, 它使用else的打印语句打印出每一行。 我知道我在 for 循环中有它,它会迭代所有实例 文件中的行。我的最终目标是打印出一个else语句实例,而不是每一行。

file=open('new_file.txt','r')
new_user=input(str('NEW: '))
for line in file:
    line=str(line)
    if new_user in line:
        print('yes its in here: ',line)
    else:
        print('Word: ',new_user,' not in here')
file.close()

不带(else语句)输出,打印出文档中找到的正确行:

  

新:丹尼        是的,它在这里:10101他知道他知道吗?丹尼

输出WITH(else):打印出所有不匹配的行。我只想打印出else块中声明的一个实例:

  

新:伙计

     

字:伙计不在这里

     

字:伙计不在这里

     

字:伙计不在这里

     

字:伙计不在这里

     

字:伙计不在这里

     

字:伙计不在这里

     

字:伙计不在这里

     

字:伙计不在这里

     

字:伙计不在这里

     

字:伙计不在这里

     

字:伙计不在这里

     

字:伙计不在这里

     

字:伙计不在这里

     

字:伙计不在这里

     

字:伙计不在这里

     

字:伙计不在这里

     

字:伙计不在这里

     

字:伙计不在这里

输出else语句在文档中输入匹配名称:

  

新:丹尼

     

字:丹尼不在这里

     

字:丹尼不在这里

     

字:丹尼不在这里

     

字:丹尼不在这里

     

字:丹尼不在这里字:丹尼不在这里

     

字:丹尼不在这里

     

字:丹尼不在这里

     是的,它在这里:10101他知道他知道吗?丹尼

     

字:丹尼不在这里

     

字:丹尼不在这里

     

字:丹尼不在这里

     

字:丹尼不在这里

     

字:丹尼不在这里

     

字:丹尼不在这里

     

字:丹尼不在这里

     

字:丹尼不在这里

     

字:丹尼不在这里

任何正确方向的帮助都会很棒。

谢谢, 丹尼

3 个答案:

答案 0 :(得分:2)

设置一个标志,并在您检查完文件后将其打印出来。

file=open('new_file.txt','r')
new_user=input(str('NEW: '))
flag = False
for line in file:
    line=str(line)
    if new_user in line:
        print('yes its in here: ',line)
        flag = True
if not flag:
    print('Word: ',new_user,' not in here')
file.close()

答案 1 :(得分:1)

另一个选项而不是使用标志是将此逻辑包含在函数中,如果找到该单词则返回该行,如果从未找到,则返回progress

None

<强> 说明:

通过在找到匹配项后立即返回函数内部,您可以确保它只返回您正在查找的关键字的第一个实例。

在切换到使用def find_word (file, word): with open(file) as infile: for line in infile: if word in line: return line return None new_user=input(str('NEW: ')) ln = find_word('new_file.txt', new_user) if (ln): print('yes its in here: ',ln) else: print('Word: ',new_user,' not in here') 语法打开文件时,您会获得如下优势:如果在读取文件时抛出异常,文件仍将关闭。它还会在返回之前关闭文件。您当前使用with open('filename') as ...打开文件的方法然后在最后使用file=open(...)显式关闭文件意味着在某些情况下文件将无法正确关闭。 (这可能不是问题,但可能在将来)

另一个优点是,将代码转换为函数可以更轻松地使用不同的搜索关键字多次运行查询。

答案 2 :(得分:0)

你必须像旗子一样使用,如果你匹配这个词就会显示出来。例如:

file=open('new_file.txt','r')
new_user=input(str('NEW: '))
notFound = 1 # The flag that shows if the user was found.
for line in file:
    line=str(line)
    if new_user in line:
        print('yes its in here: ',line)
        notFound = 0 # Now is false.
if notFound: # Check if the user wasn't found.
    print('Word: ',new_user,' not in here')
file.close()

我认为这应该有用。