在程序中,额外的空白可能令人迷惑。对程序员来说,'python' 和'python ' 看起来几乎没什么两样,但对程序来说,它们是两个不同的字符串。Python 能够发现 'python ' 中额外的空白,并认为它意义重大--除非你告诉它不是这样的。
空白很重要,因为你经常需要比较两个字符串是否相同。例如,一个重要的示例是,在用户登录网站时检查其用户名。即使在非常简单的情形下,额外的空白也可能令人迷惑。所幸,在 Python 中删除用户输入数据中多余的空白易如反掌。
Python 能够找出字符串左端和右端多余的空白。要确保字符串右端没有空白,可使用 rstrip() 方法。
>>>favorite_language = 'python ' #字符串python后面有两个空格
>>>favorite_language
'python ' #字符串python后面有两个空格
>>>favorite_language.rstrip()
'python' #字符串python后面没有空格
>>>favorite_language
'python ' #字符串python后面有两个空格与变量 favorite_language 关联的字符串右端有多余的空白(见①)。当你在终端会话中向 Python 询问这个变量的值时,可看到末尾的空格(见②)。对变量 favorite_language 调用 rstrip()方法后(见④),这个多余的空格被删除了。然而,这种删除只是暂时的,如果再次询问 favorite_ language 的值,这个字符串会与输入时一样,依然包含多余的空白(见⑥)。
要永久删除这个字符串中的空白,必须将删除操作的结果关联到变量:
>>>favorite_language = 'python '
>>>favorite_language = favorite_language.rstrip()
>>>favorite_language
'python'为删除这个字符串中的空白,你将其右端的空白删除,再将结果关联到原来的变量(见②)。在编程中,经常需要修改变量的值,再将新值关联到原来的变量。这就是变量的值可能随程序的运行或用户的输入数据发生变化的原因所在。
还可以删除字符串左端的空白或同时删除字符串两端的空白,分别使用 lstrip() 方法和 strip() 方法即可:
>>>favorite_language = ' python ' #字符串python前后都有两个空格
>>>favorite_language.rstrip()
' python' #字符串python前面有两个空格
>>>favorite_language.lstrip()
'python ' #字符串python后面有两个空格
>>>favorite_language.strip()
'python' #字符串python前后都没有空格在这个示例中,我们首先创建了一个开头和末尾都有空白的字符串(见①)。接下来,分别删除右端(见②)、左端(见④)和两端(见⑥)的空白。尝试使用这些剥除(strip)函数,有助于你熟悉字符串操作。在实际程序中,这些函数最常用于在存储用户输入前对其进行清理。
关于strip的用法可以参考Python官方文档
str.strip(chars=None, /)
返回原字符串的副本,移除其中的前导和末尾字符。 chars 参数为指定要移除字符的字符串。 如果省略或为 None,则 chars 参数默认移除空白符。 实际上 chars 参数并非指定单个前缀或后缀;而是会移除参数值的所有组合:
>>>' spacious '.strip()
'spacious'
>>>'www.example.com'.strip('cmowz.')
'example'str.lstrip(chars=None, /)
返回原字符串的副本,移除其中的前导字符。 chars 参数为指定要移除字符的字符串。 如果省略或为 None,则 chars 参数默认移除空白符。 实际上 chars 参数并非指定单个前缀;而是会移除参数值的所有组合:
>>>' spacious '.lstrip()
'spacious '
.>>>'www.example.com'.lstrip('cmowz.')
'example.com'str.rstrip(chars=None, /)
返回原字符串的副本,移除其中的末尾字符。 chars 参数为指定要移除字符的字符串。 如果省略或为 None,则 chars 参数默认移除空白符。 实际上 chars 参数并非指定单个后缀;而是会移除参数值的所有组合:
>>>' spacious '.rstrip()
' spacious'
>>>'mississippi'.rstrip('ipz')
'mississ' 