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

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

正則表達式匹配無效的 Unicode 字符

正則表達式匹配無效的 Unicode 字符

慕標琳琳 2021-08-11 21:49:54
我有這樣的字符串:?,?,\u0f6e,?,?,\u2d75,?,?,\ua97d,?,?,\u2d6e,鼺,\x00?我想過濾掉所有這些以斜杠開頭的無效字符,我試圖用 Python 中的正則表達式來做。它確實像這樣工作:re.sub(r",\u0f6e,", r",deleted,", s)但不是這樣:re.sub(r",\.{5},", r",deleted,", s)它應該根據http://pythex.org工作,所以我猜這是因為它們是無效字符?我怎樣才能匹配它們?編輯: @metatoaster 說我的問題不明確:問題似乎是因為輸入字符串s不是原始字符串而出現的。>>> s = ' ?,?,\u0f6e,?,?,\u2d75,?,?,\ua97d,?,?,\u2d6e,鼺,\x00?'>>> re.sub(r",\u0f6e,", r",deleted,", s)' ?,?,deleted,?,?,\u2d75,?,?,\ua97d,?,?,\u2d6e,鼺,\x00?'
查看完整描述

2 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

您似乎有一個帶有未定義 Unicode 代碼點的字符串。 \u0f6e是表示為轉義碼的單個代碼點。例子:


>>> s = '?,?,\u0f6e,?,?,\u2d75,?,?,\ua97d,?,?,\u2d6e,鼺,\x00?'

>>> s

'?,?,\u0f6e,?,?,\u2d75,?,?,\ua97d,?,?,\u2d6e,鼺,\x00?'

>>> print(s)

?,?,?,?,?,?,?,?,?,?,?,?,鼺, ?

請注意打印字符串如何將字符顯示為未定義的框。它顯示為用于調試的轉義碼。這些代碼點有一些共同點。根據 Unicode 數據庫,它們是 C 類(控制)代碼點。他們也沒有名字。一種快速過濾方法是:


>>> ''.join(['deleted' if ud.category(c)[0] == 'C' else c for c in s])

'?,?,deleted,?,?,deleted,?,?,deleted,?,?,deleted,鼺,deleted?'


查看完整回答
反對 回復 2021-08-11
  • 2 回答
  • 0 關注
  • 301 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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