2013-12-09 195 views
0

此程序:如何切分列表元素(獲取列表元素的子字符串)?

lijst = ('123-Abc','456-Def','789-Ghi') 

print "lijst[1]  = " + lijst[1] 
print "lijst[1][4:] = " + lijst[1][4:] 
print "lijst[1][4:1] = " + lijst[1][4:1] 

具有這樣的輸出:

lijst[1]  = 456-Def 
lijst[1][4:] = Def 
lijst[1][4:1] = 

?? 我希望最後一行是「D」!

那麼,爲了從列表元素中獲取子串,正確的語法是什麼? (我上的覆盆子PI運行蟒2.7.3)

+0

的數字在[A:B]語法應爲「從A到B」,而不是「從,長度b」 。您要求從4到1的子字符串,因爲1 <4,所以爲空。 –

+0

是的。新手錯誤在這裏(來自其他語言的太多mid()和substr()) – Foxbox

回答

2

切斷用正確的語法是[start:stop],而不是[start:count],它在這個問題使用的方式。所以你實際上在尋找最後一行lijst[1][4:4+1]lijst[1][4:5]

有這種各種各樣的好理由。您可以使用相同的索引到一個字符串分割成兩個部分,例如

lijst[1][:4] = "456-" 
lijst[1][4:] = "Def" 

lijst[1][:4] + lijst[1][4:] == lijst[1] 

注意如何可以離開了第一個或最後一個條目,以指示開始或結束的字符串。

使用像這樣的索引的另一個很好的功能是字符串的長度由stop-start給出。所以

lijst[1][2:6] = "6-De" 

,這串的長度是最後6 - 2 = 4

注意的一點是,你也可以通過添加另一個階躍折射率跳過字符串中的條目:

lijst[1][0:7:2] = "46Df" 

這正好從開始(索引0)到結尾(索引7)並顯示每個第二個條目。既然你可以離開了開始和結束索引,這相當於

lijst[1][::2] 
0

獲取索引ab(不含b)之間的子串被使用切片[a:b]實現。要獲得索引i處的字符,只需使用[i](將字符串視爲字符數組)。

>>> test = "456-Def" 
>>> test[4:5] 
'D' 
>>> test[4:8] 
'Def' 
>>> test[4] 
'D'