这个程序:
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”!
那么从list元素中获取子字符串的正确语法是什么? (我在树莓派上运行python 2.7.3)
答案 0 :(得分: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]
答案 1 :(得分:0)
使用切片a
获取索引b
和b
(不包括[a:b]
)之间的子字符串。要获取索引i
处的字符,只需使用[i]
(将字符串视为字符数组)。
>>> test = "456-Def"
>>> test[4:5]
'D'
>>> test[4:8]
'Def'
>>> test[4]
'D'