首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python -文件行-pallindrom.

Python -文件行-pallindrom.
EN

Stack Overflow用户
提问于 2016-08-26 00:14:32
回答 3查看 110关注 0票数 1

我一直在做python的学习任务,我遇到了这个任务,我必须读取一个只包含很少单词的文件,如果一行是回文(向后写入时也是如此: lol > lol),所以我尝试使用此代码,但它不会在终端上打印任何内容:

代码语言:javascript
运行
复制
with open("words.txt") as f:
    for line in f:
        if line == line[::-1]:
            print line

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

代码语言:javascript
运行
复制
with open("words.txt") as f:
    for line in f:
        print line

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

代码语言:javascript
运行
复制
sefes
kurwa
rawuk
lol
bollob
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-26 00:18:58

这是因为这些行的末尾包含"\n""\n"表示换行。因此,根据python的说法,这些都不是回文。

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

代码语言:javascript
运行
复制
with open("words.txt") as f:
    for line in f:
        if line.strip() == line.strip()[::-1]:
            print line
票数 1
EN

Stack Overflow用户

发布于 2016-08-26 00:18:40

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

票数 1
EN

Stack Overflow用户

发布于 2016-08-26 00:20:26

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

代码语言:javascript
运行
复制
with open("words.txt") as f:
    for line in f:
        line = line.rstrip()
        if line == line[::-1]:
            print line
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39150139

复制
相关文章

相似问题

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