我不理解 str.startswith
方法的行为。
如果我执行 "hello".startswith("")
,它会返回 True。理论上它不应该以空字符串开头。
>>> "hello".startswith("")
True
文档说明如下:
那么这个函数是如何工作的呢?如果字符串以前缀开头,则返回True,否则返回False。prefix也可以是要查找的多个前缀的元组。
我不理解 str.startswith
方法的行为。
如果我执行 "hello".startswith("")
,它会返回 True。理论上它不应该以空字符串开头。
>>> "hello".startswith("")
True
那么这个函数是如何工作的呢?如果字符串以前缀开头,则返回True,否则返回False。prefix也可以是要查找的多个前缀的元组。
str.startswith()
可以用 Python 代码表示为:
def startswith(source, prefix):
return source[:len(prefix)] == prefix
它测试源字符串的前len(prefix)
个字符是否等于前缀。如果您传入长度为零的前缀,那意味着将测试前0个字符。长度为0的字符串始终等于任何其他长度为0的字符串。
请注意,这也适用于其他字符串测试:
>>> s = 'foobar'
>>> '' in s
True
>>> s.endswith('')
True
>>> s.find('')
0
>>> s.index('')
0
>>> s.count('')
7
>>> s.replace('', ' -> ')
' -> f -> o -> o -> b -> a -> r -> '
最后两个演示,一个是计数空字符串,另一个是将空字符串替换为其他内容,表明你可以在输入字符串的每个位置找到空字符串。
如果一个字符串p
是另一个字符串s
的前缀,那么有s = p + x
,因此空字符串是所有字符串的前缀(类似于0,s = 0 + s
)。
str.count()
,你会发现在任何给定的输入字符串s
中,恰好有len(s) + 1
个空字符串。 - Martijn Pieters