2.11 åˆ é™¤å—符串ä¸ä¸�需è¦�çš„å—符¶
问题¶
ä½ æƒ³åŽ»æŽ‰æ–‡æœ¬å—符串开头,结尾或者ä¸é—´ä¸�想è¦�çš„å—符,比如空白。
解决方案¶
strip() æ–¹æ³•èƒ½ç”¨äºŽåˆ é™¤å¼€å§‹æˆ–ç»“å°¾çš„å—符。 lstrip() å’Œ rstrip() 分别从左和从å�³æ‰§è¡Œåˆ 除æ“�作。
默认情况下,这些方法会去除空白å—ç¬¦ï¼Œä½†æ˜¯ä½ ä¹Ÿå�¯ä»¥æŒ‡å®šå…¶ä»–å—符。比如:
>>> # 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() 方法在读å�–和清ç�†æ•°æ�®ä»¥å¤‡å�Žç»å¤„ç�†çš„æ—¶å€™æ˜¯ç»�常会被用到的。
æ¯”å¦‚ï¼Œä½ å�¯ä»¥ç”¨å®ƒä»¬æ�¥åŽ»æŽ‰ç©ºæ ¼ï¼Œå¼•å�·å’Œå®Œæˆ�其他任务。
但是需è¦�注æ„�的是去除æ“�作ä¸�会对å—符串的ä¸é—´çš„æ–‡æœ¬äº§ç”Ÿä»»ä½•å½±å“�。比如:
>>> s = ' hello world \n'
>>> s = s.strip()
>>> s
'hello world'
>>>
å¦‚æžœä½ æƒ³å¤„ç�†ä¸é—´çš„ç©ºæ ¼ï¼Œé‚£ä¹ˆä½ éœ€è¦�求助其他技术。比如使用 replace() 方法或者是用æ£åˆ™è¡¨è¾¾å¼�替æ�¢ã€‚示例如下:
>>> s.replace(' ', '')
'helloworld'
>>> import re
>>> re.sub('\s+', ' ', s)
'hello world'
>>>
é€šå¸¸æƒ…å†µä¸‹ä½ æƒ³å°†å—符串 strip æ“�作和其他è¿ä»£æ“�作相结å�ˆï¼Œæ¯”如从文件ä¸è¯»å�–多行数æ�®ã€‚
å¦‚æžœæ˜¯è¿™æ ·çš„è¯�,那么生æˆ�器表达å¼�å°±å�¯ä»¥å¤§æ˜¾èº«æ‰‹äº†ã€‚比如:
with open(filename) as f:
lines = (line.strip() for line in f)
for line in lines:
print(line)
在这里,表达� lines = (line.strip() for line in f) 执行数�转��作。
è¿™ç§�æ–¹å¼�é�žå¸¸é«˜æ•ˆï¼Œå› 为它ä¸�需è¦�预先读å�–所有数æ�®æ”¾åˆ°ä¸€ä¸ªä¸´æ—¶çš„列表ä¸åŽ»ã€‚
它仅仅�是创建一个生�器,并且�次返回行之�会先执行 strip �作。
对于更高阶的stripï¼Œä½ å�¯èƒ½éœ€è¦�使用 translate() 方法。请å�‚阅下一节了解更多关于å—符串清ç�†çš„内容。