Python每日一練0016
問題
你想去掉文本字元串開頭,結尾或者中間不想要的字元,比如空白。
解決方案
對於簡單的文本替換,我們可以使用[lr]strip
和replace
strip()
方法能用於刪除開始或結尾的字元。 lstrip()
和 rstrip()
分別從左和從右執行刪除操作。 默認情況下,這些方法會去除空白字元,但是你也可以指定其他字符集合。
>>> spacious .lstrip()spacious >>> www.example.com.lstrip(cmowz.)example.com>>> spacious .rstrip() spacious>>> mississippi.rstrip(ipz)mississ>>> spacious .strip()spacious>>> www.example.com.strip(cmowz.)example
如果需要替換或者刪除中間的某些字元,可以使用replace
方法
>>> abc.replace(b, )ac
那麼對於複雜的替換或者刪除操作,比如需要一次替換多個字元,可以使用str.translate(table)
方法
這個方法需要傳入的table
是一個實現了__getitem__()
方法的對象(例如dict),其中key必須是unicode編碼,value是unicode編碼或者字元或者None
mapping = { ord(1): a, ord(2): ord(b), ord(3): None,}str1 = 123str2 = str1.translate(mapping)print(str2)
輸出為ab
我們也可以使用str.maketrans()
來更簡單的生成上述的table
,比如通過一個key和value都是字元的dict
生成一個上述的table
```>>>python
mapping = { 1: a, 2: ord(b),3: None,
}str1 = 123str2 = str1.translate(str.maketrans(mapping))print(str2)輸出為`ab`也可以通過兩個**相同長度**的字元串創建一個上述的`table````python>>> mapping = str.maketrans(123, abc)>>> str1 = ppp123yyy>>> str2 = str1.translate(mapping)>>> print(str2)pppabcyyy
討論
字元串替換和刪除的方法有很多,一般來說為了追求效率,我們應該使用最簡單的那個方法
比如需要替換或刪除頭部或者尾部的時候考慮strip
、lstrip
、rstrip
還需要替換或刪除中間元素時候再考慮replace
如果遇到更複雜的替換刪除操作,或者使用上述方法來做非常麻煩的時候,可以考慮translate
方法
當然,當涉及到一些模式的時候,可以使用考慮re
模塊來處理字元串
來源
Stack Overflow
關注
歡迎關注我的微信公眾號:python每日一練
http://weixin.qq.com/r/YygOFnnE8iSNrT11931x (二維碼自動識別)
推薦閱讀:
※怎麼解決Python3亂碼問題?
※請問用python3寫貪吃蛇時,怎麼只用左右兩個鍵控制蛇上下左右四個方向轉彎?
※在同一台電腦下如何進行 Python 2 與 3 的切換?
※據說Python中tuple的速度比list快,如果tuple中包含有list元素,tuple是如何保持比list快的?
※python3下,re.findall返回值前後的[" 『]怎麼去掉?