亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

蟒蛇 re.sub 刪除數字字符回文

蟒蛇 re.sub 刪除數字字符回文

慕村225694 2022-09-20 15:22:31
我正在嘗試刪除標點符號以檢查短語(或單詞)是否是回文,盡管當我有一個帶有數字的單詞時,它們將被刪除,并且它返回True而不是False?!?a2”在用子返回“a”清理標點符號后,盡管它仍然應該給我“1a2”。我以為我只拿起標點符號來代替。import redef isPalindrome(s):    clean = re.sub("[,.;@#?+^:%-=()!&$]", " ", s)    lower = ''.join([i.lower() for i in clean.split()])    if lower == lower[::-1]:        return True    else:        return Falseprint(isPalindrome("1a2"))
查看完整描述

3 回答

?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

您正在正則表達式中使用,并且需要正確轉義它,請嘗試以下操作:-

re.sub("[,.;@#?+^:%\-=()!&$]", " ", s)

文檔中查看特殊字符列表以及如何注意 .[]


查看完整回答
反對 回復 2022-09-20
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

在你的情況下,我會使用str.maketrans字符串模塊中的標點符號集,因為我認為這比正則表達式更具可讀性:

import string

s = s.translate(str.maketrans('', '', string.punctuation))


查看完整回答
反對 回復 2022-09-20
?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

特殊字符必須在正則表達式字符串中轉義。即


clean = re.sub(r"[,\.;@\#\?\+\^:%\-=\(\)!\&\$]", " ", s)

或使用 re.escape,它會自動轉義特殊字符


esc = re.escape(r',.;@#?+^:%-=()!&$')

clean = re.sub("[" + esc + "]", " ", s)


查看完整回答
反對 回復 2022-09-20
  • 3 回答
  • 0 關注
  • 96 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號