2014-11-05 102 views
2

爲什麼[:-0]返回空字符串?我的代碼中有一個變量,它決定了必須剪切的字符串的長度。問題是,當此變量中存在int(0)時,它會返回空字符串。從字符串剪切零字符(字符串[: - 0]) - Python

例子:

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

您正在要求Python創建一個從索引0到索引0的新字符串。這是一個空片。

切片的結束值是排他性的。 Python從起始索引中挑選出結束索引中的所有字符。這裏-00是一樣的東西(負零與正零相同)。

請注意,這與使用實際負值不同; [0:-1]將取長度並用len(object) - 1代替負值並將其用作最終值,但此不適用於-0,因爲這不是負值!

可以使用None而不是0如果你想切到最後:

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

謝謝你,當然我的意思範圍(3,-1,-1)。我編輯了我的問題。 – 2014-11-05 17:59:27

1

切片中的第二個參數是結束位置。

[start : stop : step] 

startstop範圍爲半開,這意味着它包括start直到但不包括stop

所以[: 0]表示從[0]開始,停在但不包括[0],它只能是空字符串。