《Python Cookbook 3rd》笔记(2.11):删除字符串中不需要的字符
刪除字符串中不需要的字符
問題
你想去掉文本字符串開頭,結(jié)尾或者中間不想要的字符,比如空白
解法
strip() 方法能用于刪除開始或結(jié)尾的字符。 lstrip() 和 rstrip() 分別從左和從右執(zhí)行刪除操作。默認(rèn)情況下,這些方法會(huì)去除空白字符,但是你也可以指定其他字符。比如:
>>> # Whitespace stripping >>> s = ' hello world \n' >>> s.strip() 'hello world' >>> s.lstrip() 'hello world \n' >>> s.rstrip() ' hello world' >>> >>> # Character stripping >>> t = '-----hello=====' >>> t.lstrip('-') 'hello=====' >>> t.strip('-=') 'hello' >>>討論
這些 strip() 方法在讀取和清理數(shù)據(jù)以備后續(xù)處理的時(shí)候是經(jīng)常會(huì)被用到的。比如,你可以用它們來(lái)去掉空格,引號(hào)和完成其他任務(wù)。
但是需要注意的是去除操作不會(huì)對(duì)字符串的中間的文本產(chǎn)生任何影響。比如:
>>> s = ' hello world \n' >>> s = s.strip() >>> s 'hello world' >>>如果你想處理中間的空格,那么你需要求助其他技術(shù)。比如使用 replace() 方法或者是用正則表達(dá)式替換。示例如下:
>>> s.replace(' ', '') 'helloworld' >>> import re >>> re.sub('\s+', ' ', s) 'hello world' >>>通常情況下你想將字符串 strip 操作和其他迭代操作相結(jié)合,比如從文件中讀取多行數(shù)據(jù)。如果是這樣的話,那么生成器表達(dá)式就可以大顯身手了。比如:
with open(filename) as f:lines = (line.strip() for line in f)for line in lines:print(line)在這里,表達(dá)式 lines = (line.strip() for line in f) 執(zhí)行數(shù)據(jù)轉(zhuǎn)換操作。這種方式非常高效,因?yàn)樗恍枰A(yù)先讀取所有數(shù)據(jù)放到一個(gè)臨時(shí)的列表中去。它僅僅只是創(chuàng)建一個(gè)生成器,并且每次返回行之前會(huì)先執(zhí)行 strip 操作。
對(duì)于更高階的 strip,你可能需要使用 translate() 方法。
總結(jié)
以上是生活随笔為你收集整理的《Python Cookbook 3rd》笔记(2.11):删除字符串中不需要的字符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《C++ Primer 5th》笔记(1
- 下一篇: 《Python Cookbook 3rd