Python - 文件行 - pallindrome

时间:2016-08-25 16:14:32

标签: python python-2.7 palindrome

我一直在做学习的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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

这是因为这些行最后包含"\n""\n"表示新行。因此根据python,这些都不是回文。

您可以通过执行以下操作来剥离"\n"

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

答案 2 :(得分:1)

当您从这样的文件中读取一行时,您还会获得换行符。因此,例如,您正在查看'sefes\n',其反转时为'\nsefes'。这两条线当然不相等。解决此问题的一种方法是使用rstrip删除这些换行符:

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