我一直在做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
发布于 2016-08-25 16:18:58
这是因为这些行的末尾包含"\n"
。"\n"
表示换行。因此,根据python的说法,这些都不是回文。
您可以通过执行以下操作来首先剥离"\n"
:
with open("words.txt") as f:
for line in f:
if line.strip() == line.strip()[::-1]:
print line
发布于 2016-08-25 16:18:40
每个line
的最后一个字符是换行符("\n")。在检查行是否为回文之前,需要去掉尾随换行符("foo\n".strip()
)。
发布于 2016-08-25 16:20:26
当您从这样的文件中读取一行时,您也会得到换行符。所以,例如,你看到的是'sefes\n'
,当颠倒过来的时候就是'\nsefes'
。这两条线当然不相等。解决此问题的一种方法是使用rstrip
删除这些换行符:
with open("words.txt") as f:
for line in f:
line = line.rstrip()
if line == line[::-1]:
print line
https://stackoverflow.com/questions/39150139
复制相似问题