经常遇到python调用shell命令的输出内容中有换行符,导致隐形的字符串没有匹配上。所以在对比shell命令输出的字符串,一定要在python中注意处理掉字符串结尾的换行符。
python提供了一个非常方便的方法rstrip()
可以删除掉换行符
>>> 'test string\n'.rstrip()
'test string'
rstrip()
甚至可以删除所有类型的尾部:
>>> 'test string \n \r\n\n\r \n\n'.rstrip()
'test string'
只删除新行符号(newlines)可以指定:
>>> 'test string \n \r\n\n\r \n\n'.rstrip('\n')
'test string \n \r\n\n\r '
另外还有对应的lstrip()
和rstrip()
分别用于去除左边的换行符和右边的换行符
>>> s = " \n\r\n \n abc def \n\r\n \n "
>>> s.strip()
'abc def'
>>> s.lstrip()
'abc def \n\r\n \n '
>>> s.rstrip()
' \n\r\n \n abc def'
在日常调用shell中,实际上shell也提供了一个去除换行符的方法,就是使用
echo -n $(XXXXX)
,此时调用的指令的换行符也会被去除。