我正在Python中工作。我有以下代码:为什么两个空字符串切片不能“相等”?
while not is_suffix(pattern[:k], pattern[:q]):
k -= 1
print k
def is_suffix(potential_suffix, text):
print "|" + potential_suffix + "|" + text + "|"
for i in range(len(text)):
if potential_suffix == text[i:]:
return True
return False
(while循环实际上是在一个函数中,但我省略了不相关的代码)。结果是while循环将永远存在。 is_suffix函数可以找到两个相等的非空字符串。但是,如果遇到问题,它会到达for循环的结尾,并尝试比较文本[i:](其为空)和potential_suffix,在这种情况下为空。代码到达最后并返回False,这会导致while循环永远持续。
我声称这两个是空字符串,因为is_suffix中的打印行打印出“|||”在相关情况下。
有什么基础我失踪了?为什么两个空串不会被视为相等?
你熟悉的'.endswith'方法,什么'text.endswith(potential_suffix)'和'text.endswith(tuple_of_suffixes)'做什么? – DSM 2012-03-29 23:34:27
@DSM这应该是一个答案,而不是一个评论,因为它是正确的答案。 :) – 2012-03-30 01:41:46
@DSM没有先生,我不熟悉。我现在是!非常感谢。 – Paragon 2012-03-30 14:28:55