字符实战——基本操作

未匹配的标注

让我们通过与Python解释器交互来展示之前在表7-1中列出的基本字符串操作。可以使用+操作符来连接字符串,使用*操作符来重复他们:

% python
>>> len('abc') # 长度:项的数量
3
>>> 'abc' + 'def' # 连接:新字符串
'abcdef'
>>> 'Ni!' * 4 # 重复: 和 "Ni!" + "Ni!" + ... 一样
'Ni!Ni!Ni!Ni!'

这里len内置函数返回了字符串的长度(或其它任何对象的长度)。依照规定,用 + 将两个字符串对象相加会创建一个新的字符串对象,操作对象的内容会被连接起来;用 的重复就像是将一个字符串将自己相加许多次。在两种情况下,Python允许创建任意大小的字符串;在Python中没必要提前声明任何东西,包括数据结构的大小——只需要简单地按需创建字符串对象,然后让Python自动管理背后的内存空间(关于Python的内存管理“垃圾回收器”的更多信息,请参考第6章*)。

一开始重复可能看起来有点晦涩,但它出人意料地在许多场合都有用。比如,要打印80个破折号组成的一行,可以数到80,或让Python来数:

>>> print('------- ...more... ---') # 80 破折号, 难的方法
>>> print('-' * 80) # 80 破折号, 简单的方法

注意操作符重载在这里已经在工作了:当使用数字时,一直在使用同样的+和*操作符执行加法和乘法。Python进行正确的操作因为它知道被相加和相乘的对象类型。但请小心:这些规则并不像你想的那样没有限制。比如,Python不允许在+表达式中混合数字和字符串:'abc' + 9 会报错而非自动将9转换为字符串。

表7-1最后一行显示的,还可以使用for语句(它重复操作)在循环中迭代字符串;使用in表达式操作符(它本质上是搜索)为多个字符和子字符串进行成员测试。对子字符串,in非常像本章后面讲述的str.find()方法,但它返回一个布尔值的结果而非子字符串的位置(下面代码使用了3系列的print调用,可能会让光标有一点缩进;相反,在2系列中使用的是 print c):

>>> myjob = "hacker"
>>> for c in myjob: print(c, end=' ') # 步进并打印每个字符 (3.X 形式)
...
h a c k e r
>>> "k" in myjob # 发现了
True
>>> "z" in myjob # 没发现
False
>>> 'spam' in 'abcspamdef' # 子字符串搜索,没有位置返回
True

for循环给一个变量分配了序列(这里是字符串)中的连续项,并为每一项执行了一个或多个语句。实际上,变量c变成了一个光标,一步步遍历了这里字符串的每个字符。本书后面将会更详细地讨论表7-1中列出的像这些的迭代工具和其它东西(特别是在*第14,20章“中)。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 查看所有版本


暂无话题~