上QQ阅读APP看书,第一时间看更新
2.7.2 下标访问
在自然语言交流中,我们经常需要针对字符的位置信息进行描述,比如:
·英文人名的首字母需要大写。
·请给出身份证号的最后四位。
·问句应该以问号结尾。
·“上海自来水来自海上”这句话是回文(对称的文字)。
在开始了解字符串的下标操作之前,我们首先来了解len函数。在Python语言里,用len函数可以得到一个字符串的长度。
>>> len('aabbcc') 6 >>> len('') 0 >>> len(' ') 1 >>> name = "Ronnie O'Sullivan" >>> len(name) 17
在Python语言里,对于字符串,我们可以根据下标(位置偏移量)对其进行操作,第一个字符的下标是0,第二个字符的下标是1,依次类推。
>>> name = "Ronnie O'Sullivan" >>> name "Ronnie O'Sullivan" >>> name[0] 'R' >>> name[7] 'O'
Python还有一个特别的设计,即通过负值的下标,可以很方便地从后往前定位字符,下标–1对应的是最后一个字符,下标–2对应的是倒数第二个字符,依次类推。如果读者有C++或Java的编程背景,应该深有体会,这样的操作在C++或Java里并不是特别直观。Python的这个设计给程序员带来了很大的便利。
>>> name = "Ronnie O'Sullivan" >>> name[-1] 'n' >>> name[-3] 'v'
下标的操作还可以是一个范围,操作的结果是得到一个子字符串。
在string[start_index:end_index]中,start_index是起始下标,end_index是结束下标,起始位置的字符会被包含在结果子字符串中,结束下标位置的字符不会被包含。
>>> name "Ronnie O'Sullivan" >>> name[0:4] 'Ronn'
起始下标可以省略,如果不指定,默认为字符串的头(下标为0);结束下标也可以省略,如果不指定,默认为字符串的尾。
>>> name[7:] "O'Sullivan" >>> name[:6] 'Ronnie' >>> name[:] "Ronnie O'Sullivan"
当然,负值的下标也同样适用。
>>> name[-10:] "O'Sullivan" >>> name[-10:-2] "O'Sulliv"
如果结束下标比起始下标还要小,结果会是一个空字符串。
>>> name[0:6] 'Ronnie' >>> name[6:0] ''
回到本节最开始提到的一点:“上海自来水来自海上”这句话是回文。请读者思考,我们如何判断一个字符串是不是回文?