Python - 文件行 - 回文

Python - file lines - pallindrome

我一直在做 python 学习任务,我遇到了这个任务,我必须阅读一个包含几个单词的文件,如果一行是回文(倒写时相同:lol > lol) 所以我尝试了这段代码,但它没有在终端上打印任何内容:

with open("words.txt") as f:
    for line in f:
        if line == line[::-1]:
            print line

但是如果我这样打印,没有 if 条件,它会打印出这些词:

with open("words.txt") as f:
    for line in f:
        print line

我想知道为什么它不打印我在文件中写的字:

sefes
kurwa
rawuk
lol
bollob

每个 line 的最后一个字符是换行符(“\n”)。在检查该行是否为回文之前,您需要去除尾随换行符 ("foo\n".strip())。

这是因为这些行的末尾包含 "\n""\n" 表示换行。因此 none 根据 python.

是回文

您可以先通过以下方式去除 "\n"

with open("words.txt") as f:
    for line in f:
        if line.strip() == line.strip()[::-1]:
            print line

当你从这样的文件中读取一行时,你也会得到换行符。因此,例如,您看到的是 'sefes\n',倒过来就是 '\nsefes'。这两条线当然不相等。解决这个问题的一种方法是使用 rstrip 删除这些换行符:

with open("words.txt") as f:
    for line in f:
        line = line.rstrip()
        if line == line[::-1]:
            print line