- Python進階編程:編寫更高效、優雅的Python代碼
- 劉宇宙 謝東 劉艷
- 356字
- 2021-04-30 12:39:40
2.4.2 字符串忽略大小寫的搜索替換
在實際工作中,我們經常需要搜索和替換字符串,有時還需要忽略大小寫。
為了在文本操作時忽略大小寫,我們需要在使用re模塊的時候給這些操作提供re.IGNORECASE標志參數,示例如下:
import re text_val = 'LEARN PYTHON3, like python, Good at Python' print(re.findall('python', text_val, flags=re.IGNORECASE)) print(re.sub('python', 'snake', text_val, flags=re.IGNORECASE))
上面示例的最后一行有一個小缺陷,替換字符串并不會自動與被匹配字符串的大小寫保持一致。這里需要一個類似如下的輔助函數,代碼(ignore_case_exp.py)示例如下:
def match_case(word): def replace(m): text = m.group() if text.isupper(): return word.upper() elif text.islower(): return word.lower() elif text[0].isupper(): return word.capitalize() else: return word return replace
上述輔助函數的格式如下:
print(re.sub('python', match_case('snake'), text_val, flags=re.IGNORECASE))
執行py文件,輸出結果如下:
LEARN SNAKE3, like snake, Good at Snake
match_case('snake')返回了一個回調函數(參數必須是match對象)。前面提到過,sub()函數除了接收替換字符串外,還能接收一個回調函數。
一般情況下,對于忽略大小寫的匹配操作,簡單地傳遞一個re.IGNORECASE標志參數就足夠。但對于某些需要大小寫轉換的Unicode匹配可能還不夠,后續會有更多講解。
推薦閱讀
- Mastering OpenLayers 3
- scikit-learn Cookbook
- Python科學計算(第2版)
- Windows系統管理與服務配置
- R語言游戲數據分析與挖掘
- oreilly精品圖書:軟件開發者路線圖叢書(共8冊)
- Designing Hyper-V Solutions
- Python忍者秘籍
- Visual FoxPro程序設計習題集及實驗指導(第四版)
- Mastering Web Application Development with AngularJS
- UNIX Linux程序設計教程
- Creating Data Stories with Tableau Public
- 零代碼實戰:企業級應用搭建與案例詳解
- Instant Zurb Foundation 4
- Data Science Algorithms in a Week