检查回文时处理尾随换行符

Dealing with trailing newline when checking for palindromes

我试图从以前编写的代码中导入回文函数。回文码一开始是可以正常使用的,但是我导入后,它没有显示正确答案。

import re
def check(string):
    if (string==string[::-1]):
        print ("{} is palindorme".format(string))
    else:
        print ("{} is not palindorme".format(string))



def palindrome(text):
    c=re.sub('["?",",",".","/","@","#","%","&","*","!"," "]',"",text)
    check(c)         

这是我正在使用的功能:

from pal_func import palindrome
f=open("C:\Users\hp\Desktop\test file.txt",'r')
c=f.readline().lower()
print(c)
palindrome(c)

输出应该是:

was it a cat i saw?
wasitacatisaw is palindrome

但是显示:

was it a cat i saw?

wasitacatisaw

 is not palindorme

简述

删除尾随的换行符:

c=f.readline().lower().strip()

详情

您的问题似乎不是来自代码,而是来自您阅读文件的方式。

函数 readline 从文件中读取一行,但 不会删除尾随的换行符 。提示是答案

wasitacatisaw
 is not palindrom

有一个不是你自己写的换行符

所以函数检查得到字符串wasitacatisaw<newline>,这不是回文。

最后一句话 : 下次请同时提供您正在处理的文件(当然不要提供任何个人信息和密码),以便 SO 用户可以复制错误:)