2013-12-09 130 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'