python系列教程89

154 阅读3分钟

朋友们,如需转载请标明出处:blog.csdn.net/jiangjunsho…

声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!

还记得“不可变序列”吗?不可变的意思就是不能在原地修改一个字符串(例如,给一个索引进行赋值):

>>> S = 'spam'

>>> S[0] = "x"

Raises an error!

那么我们如何在Python中改变文本信息呢?若要改变一个字符串,需要利用合并、分片这样的工具来建立并赋值给一个新的字符串,倘若必要的话,还要将这个结果赋值给字符串最初的变量名:

>>> S = S + 'SPAM!' # To change a string,make a new one

>>> S

'spamSPAM!'

>>> S = S[:4] + 'Burger' + S[-1]

>>> S

'spamBurger!'

第一个例子在S后面加了一个子字符串,这的确是通过合并创建了一个新的字符串并赋值给S,然而你也可以把它看做是对原字符串的“修改”。第二个例子通过分片、索引、合并将4个字符变为6个字符,这一结果同样可以通过像replace这样的字符串方法来实现:

>>> S = 'splot'

>>> S = S.replace('pl','pamal')

>>> S

'spamalot'

像每次操作生成新的字符串的值那样,字符串方法都生成了新的字符串对象,如果愿意保留那些对象,你可以将其赋值给新的变量名。每修改一次字符串就生成一个新字符串对象并不像听起来效率那么低下——记住,就像在前面的文章中我们讨论过的那样,Python在运行的过程中对不再使用的字符串对象自动进行垃圾收集(回收空间),所以新的对象重用了在前边的值所占用的空间。Python的效率往往超出了你的预期。

最后,可以通过字符串格式化表达式来创建新的文本值。下面的两种方式都把对象替换为字符串,在某种意义上,是把对象转换为字符串并且根据指定的格式来改变最初的字符串:

>>> 'That is %d %s bird!' % (1,'dead'# Format expression

That is 1 dead bird!

>>> 'That is {0} {1} bird!'.format1,'dead'# Format method in 2.6 and 3.0

'That is 1 dead bird!'

尽管用替换这个词来比喻,但格式化的结果是一个新的字符串对象,而不是修改后的对象。我们将在后面学习格式化,那时候,你会发现,格式化比这个例子所展示的更为通用和有用。

注意:正如我们将在后面文章见到的,Python 3.0和Python 2.6引入了一种叫做bytearray的新字符串类型,它是可以修改的,因此可以修改其中的值。bytearray对象并不是真正的字符串,它们是较小的、8位整数的序列。然而,它们支持和常规字符串相同的大多数操作,并且显示的时候打印为ASCII字符。bytearray为必须频繁修改的大量文本提供了另一个选项。