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