首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >word不等于wordlist.readline(),尽管它是

word不等于wordlist.readline(),尽管它是
EN

Stack Overflow用户
提问于 2021-12-29 05:35:16
回答 2查看 50关注 0票数 -1

这是我的密码:

代码语言:javascript
复制
wordlist = open('words.txt')

word = input()
i = 0

def loop():
    for i in range(466549):
        if wordlist.readline().strip() == word:
            print(f'found in {i}')
            return
        else:
            print(f"not {wordlist.readline()}")
            i = i + 1
            
loop()

它不仅没有返回列表的第一个值,而且也没有说它找到了我的话。我从GitHub获得了我的GitHub文件,第二个单词是"1080“。但是当我把它放进去的时候,它打印的是‘不是1080’,尽管它很明显。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-29 05:58:11

我想你要找的是:

代码语言:javascript
复制
word = input("enter word: ").strip()

def loop():
    with open("words.txt") as f:
        wordList = f.readlines()
        for i,line in enumerate(wordList):
            line = line.strip()
            if line == word:
                print(f"found in line {i}")
                return
            else:
                print(f"did not find in {line}")


loop()

或者如果你想坚持只使用readline

代码语言:javascript
复制
word = input("enter word: ").strip()
wordList = open("words.txt")

def loop():
   for i in range(466549):
       line = wordList.readline().strip()
       if line == word:
          print(f"found in line {i}")
          return
       else:
          print(f"did not find in {line}")


loop()
wordList.close()
票数 1
EN

Stack Overflow用户

发布于 2021-12-29 06:17:44

也许你想找出文本文件中的特定单词。

首先,wordlist.readline()实际上从文件中读取一行,这意味着它不是可复制的。因此,print(f"not {wordlist.readline()}")并不像您预期的那样工作。

例如,假设words.txt如下所示。

代码语言:javascript
复制
hello
1080
world

当您在循环中使用if wordlist.readline() ...读取第一行时,该值是"hello",这不是1080,因此运行else语句。在这里,您读取一行print(f"not {wordlist.readline()}")作为第二行,即1080,因此not 1080将被打印出来。

最后,if wordlist.readline() ...将从文件中读取world,这也不是1080,下一个readline()将没有。

第二个问题是变量i没有得到适当的利用。i会自动递增,这要归功于rangefor关键字(严格地说,它只是可迭代对象的下一个值,而不是增量),所以您不需要像i = 0i = i + 1那样

第三件事是从第一个问题中得出的,即None.strip()是不可能的,所以它会产生一个例外。

有更多的话要说,但我会给你看我的例子,这样你就可以把它和你的比较

代码语言:javascript
复制
input_wordlist = open('words.txt')
input_word = input()

def loop(word, wordlist):
    for index, line in enumerate(wordlist.readlines()):
        if line.strip() == word:
        # or if you wanna know whether word is in line
        # if word in line:
            print(f"found in {index}")
            return
        else:
            print(f"not in {line}")

loop(input_word, input_wordlist)
input_wordlist.close()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70515494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档