【问题标题】:Python Check list line by linePython 逐行检查列表
【发布时间】:2016-12-12 18:56:18
【问题描述】:

我的问题如下:

def searchWordlist():
path = str(raw_input(PATH))
word = str(raw_input(WORD))
with open(path) as f:
    for line in f:
        if word in line:
            print "Word found"

比我添加以下代码:

else:
    print "Word not found"

但这显然行不通,因为它会打印“Word not found”,直到找到该单词。好吧..但是我怎么能打印出这个词没有找到呢?!我真的不知道。

提前谢谢你!

【问题讨论】:

  • 创建一个变量来跟踪在循环中是否找到了该单词,然后在循环后检查该变量。

标签: python list if-statement search


【解决方案1】:

Python 对这种事情有一个特殊的技巧:

for line in f:
    if word in line:
        print "Word found"
        break
else:
    print "Word not found"

这里elsefor 一起使用,如果循环正常完成而没有碰到break,则专门执行。

【讨论】:

    【解决方案2】:

    如果您只想打印是否在任何行中找到word

    def searchWordlist():    
        path = str(raw_input(PATH))
        word = str(raw_input(WORD))
        with open(path) as f:
            if any(word in line for line in f):
                print('Word found')
            else:
                print('Word not found')
    

    【讨论】:

      【解决方案3】:
      def searchWordlist():    
          path = str(raw_input(PATH))
          word = str(raw_input(WORD))
          loc = -1
          with open(path) as f:
              for i, line in enumerate(f):
                  if word in line:
                      loc = i
                      break
          if loc >= 0:
              print ("Word found at line {}".format(loc))
          else:
              print ("Word not found")
      

      作为奖励,它可以跟踪文件中第一次看到单词的位置,如果有的话。

      【讨论】:

      • 谢谢!这对我帮助很大!
      【解决方案4】:

      如果您只需要找到第一个匹配项,您可以让您的函数在找到该单词后立即返回。如果不需要,这有一个额外的好处,那就是不必遍历整个文件

      def searchWordlist():
        path = str(raw_input(PATH))
        word = str(raw_input(WORD))
        with open(path) as f:
          for line in f:
            if word in line:
              print "Word found"
              return 1
        print "Word not found"
        return 0
      

      【讨论】:

        【解决方案5】:
        def searchWordlist():
            found_word = False
            path = str(raw_input(PATH))
            word = str(raw_input(WORD))
            with open(path) as f:
                for line in f:
                    if word in line:
                        print "Word found"
                        found_word = True
            if not found_word:
                print "Word not found!"
        

        此代码的作用是正常执行您的代码,但如果找到该单词,则将布尔值设置为 true,表示已找到该单词。然后,在完全解析文件后,它会查看是否找到了单词,变量是否为真。如果未找到该词,则打印该词未找到。如果您希望代码在第一次找到单词后停止,但在found_word = True 之后是break

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-08-11
          • 2021-12-17
          • 1970-01-01
          • 2021-11-09
          • 2015-07-16
          • 2017-05-21
          相关资源
          最近更新 更多