Skip to main content
 首页 » 编程设计

python之我可以在 python 中编写忽略特殊字符(如逗号、空格、感叹号等)的代码吗

2025年05月04日10softidea

我想创建一个将返回“true”的代码(如果我输入回文而不考虑大小写或者其中是否有特殊字符),否则返回“false”。到目前为止,我的代码适用于没有特殊字符(例如逗号、撇号、空格等)的短语。

def is_palindrome(my_str): 
    my_str= my_str.casefold() 
    rev_str= reversed(my_str) 
 
if list(my_str) == list(rev_str): 
   print("True") 
else: 
   print("False") 

当我这样做时:

 print (is_palindrome("Rats live on no evil star")) 

它返回 True 因为它是一个回文数

当我这样做时:

 print (is_palindrome("Hello World!")) 

它返回 False 因为它不是回文

当我这样做时:

 print (is_palindrome("Madam, I'm Adam")) 

它返回 False。但我想创建一个将其视为回文的代码

请您参考如下方法:

你需要在测试之前进行过滤:

letters = [c.casefold() for c in my_str if c.isalpha()] 

将只挑选出字母并将它们小写,之后您可以测试这些字母是否形成回文:

return letters == letters[::-1] 

这是有效的,因为 str.isalpha()仅对字母返回 True。

合并到你的函数中:

def is_palindrome(my_str): 
    letters = [c.casefold() for c in my_str if c.isalpha()] 
    return letters == letters[::-1] 

演示:

>>> def is_palindrome(my_str): 
...     letters = [c.casefold() for c in my_str if c.isalpha()] 
...     return letters == letters[::-1] 
...  
>>> is_palindrome("Rats live on no evil star") 
True 
>>> is_palindrome("Hello World!") 
False 
>>> is_palindrome("Madam, I'm Adam") 
True