为什么[:-0]
会返回一个空字符串?我的代码中有一个变量,用于确定必须剪切的字符串长度。问题是当这个变量中有int(0)时它会返回空字符串。
示例:
def rightPass(word,value):
substring = word[:-value]
return substring
for i in range(3,-1,-1):
print rightPass('word',i)
>>> w
>>> wo
>>> wor
>>>
我知道这样做并不是一件大事:
def rightPass(word,value):
substring = word[:-value] if value!=0 else word
return substring
但我无法找到[:-0]
这样做的原因。
我认为这是因为Python不知道-0
值但是我使用0
尝试了它并且发生了同样的问题。
有人可以解释一下吗?
答案 0 :(得分:2)
您要求Python创建一个从索引0到索引0的新字符串。这是一个空切片。
切片的结束值是独占的。 Python从之前结束索引的起始索引中选择所有字符。这里-0
与0
相同(负零与正零相同)。
请注意,这与使用实际负值不同; [0:-1]
会占用该长度,并将负值替换为len(object) - 1
并将其用作结束值,但此不适用于-0
,因为那不是负值!
如果您想切片到最后,可以使用None
代替0
:
substring = word[:-value if value else None]
答案 1 :(得分:1)
切片中的第二个参数是结束位置。
[start : stop : step]
start
到stop
的范围是半开放的,这意味着它包括start
,但不包括 stop
。
所以[: 0]
表示从[0]
开始,然后停在,但不要包含[0]
,这只能是空字符串。