从字符串 - Python中删除零字符(字符串[: - 0])

时间:2014-11-05 17:50:11

标签: python string python-2.7

为什么[:-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尝试了它并且发生了同样的问题。

有人可以解释一下吗?

2 个答案:

答案 0 :(得分:2)

您要求Python创建一个从索引0到索引0的新字符串。这是一个空切片。

切片的结束值是独占的。 Python从之前结束索引的起始索引中选择所有字符。这里-00相同(负零与正零相同)。

请注意,这与使用实际负值不同; [0:-1]会占用该长度,并将负值替换为len(object) - 1并将其用作结束值,但此不适用于-0 ,因为那不是负值!

如果您想切片到最后,可以使用None代替0

substring = word[:-value if value else None]

答案 1 :(得分:1)

切片中的第二个参数是结束位置。

[start : stop : step]

startstop的范围是半开放的,这意味着它包括start ,但不包括 stop

所以[: 0]表示从[0]开始,然后停在,但不要包含[0],这只能是空字符串。