求助:python中怎么忽略标点呢?

kiorik_1 2018-04-02 05:06:11
要求:用python3编写一个程序来检查文本是否属于回文(需要忽略其中的标点、空格与大小写);
输入文本为:“Rise to vote, sir.”
输出结果:No, it is not a palindrome
疑问:以下代码该如何修改才能使输入 “Rise to vote, sir.” 后,打印出 Yes, it is a palindrome 呢?
*********************代码如下*********************
# coding:UTF-8
import string

# 返回翻转过的文本
def reverse(text):
return text[::-1]

def is_palindrome(text):
# 忽略大小写
text = text.lower()
# 忽略空格
text = text.replace(' ','')
# 忽略标点
for char in string.punctuation:
text = text.replace(char,'')
return text == reverse(text)

something = input("Enter text: ")
# 回文:正读倒读都一样的词语
if is_palindrome(something):
print("Yes, it is a palindrome")
else:
print("No, it is not a palindrome")
...全文
560 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kiorik_1 2018-04-03
  • 打赏
  • 举报
回复
正则我还没学到,我先去看下,也感谢一楼
kiorik_1 2018-04-03
  • 打赏
  • 举报
回复
额。。。我改了一下,确实是return text == reverse(text)层次错了,感谢感谢
陈年椰子 2018-04-03
  • 打赏
  • 举报
回复
return text == reverse(text) 层次错了, 应该在for 循环外

# coding:UTF-8
import string
# 返回翻转过的文本
def reverse(text):
    return text[::-1]

def is_palindrome(text):
    # 忽略大小写
    text = text.lower().replace(' ','')
    for char in string.punctuation:
        text = text.replace(char,'')
    return text == reverse(text)

something = input("Enter text: ")
# 回文:正读倒读都一样的词语
if is_palindrome(something):
    print("Yes, it is a palindrome")
else:
    print("No, it is not a palindrome")
DarkChampion 2018-04-03
  • 打赏
  • 举报
回复
import re
re.sub("\W","",text)
DarkChampion 2018-04-03
  • 打赏
  • 举报
回复
用正则替换掉所有的符号

37,717

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧