第3章 字符串


1、构建字符串

         字符串对象的构建可以通过两种方法来进行:(1)利用字符串构造函数str(2)用两个单引号或两个双引号括起来。

         不能混合使用单引号和双引号,要求引号要成对出现。一般情况下,双引号麻烦更少。

2、三重引号字符串

        三重引号由三个连续的单引号或双引号。这个字符串将保留所有字符串的格式信息。

        如果想插入一条多行的长注释,考虑使用三引号字符串。

3、反斜线(转义)字符

        有些字符执行了必要的操作,但在输出中显示为“空白”。

       例子:

>>> s="a\nb\tc"
>>> print s
a
b	c
>>> 

4、索引和分片

     4.1 字符序列

        字符在字符串中的位置称为“索引”,索引运算符为“[]”。

        也可以从字符串的末端开始建立索引(从-1开始计数)。

>>> helloString="Hello World"
>>> helloString
'Hello World'
>>> helloString[0]
'H'
>>> helloString[5]
' '
>>> helloString[-1]
'd'
>>> helloString[10]
'd'

     4.2 索引和分片

        Python中不仅可以对单个字符建立索引,还可以对字符串中的子序列建立索引。Python采用的而是半开区间,半开区间包含范围的起始值,但不包含结束值。

>>> helloString[6:10]
'Worl'

     4.3 扩展分片

        分片还可以加入第三个参数,指出分片的步长。

        奇怪的是,当用-1作为步长,并没有明显的变化。Python的解释是,负的步长意味着向后进行。

>>> helloString="Hello World"
>>> helloString[::2]
'HloWrd'
>>> helloString[::3]
'HlWl'
>>> helloString[::-1]
'dlroW olleH'
>>> helloString[::-2]
'drWolH'

5、连接和重复

        连接符:“+”。

        重复符:“*”,需要1个字符串对象和1个整数(字符串和整数的顺序无关)。

>>> myString="Hello"
>>> yourString="World"
>>> myString+yourString
'HelloWorld'
>>> yourString+myString
'WorldHello'
>>> myString+' '+yourString
'Hello World'
>>> myString*3
'HelloHelloHello'
>>> 3*myString
'HelloHelloHello'
>>> (myString+' ')*3
'Hello Hello Hello '

6、in运算符

        用于检查集合的成员。需要两个参数:测试字符串和可能包含测试字符串的字符串。

>>> "a" in "abc"  # in
True
>>> "ab" in "acb"  # in
False
>>> "ab" not in "abc"  # not in
False

7、字符串集合是不可变的

>>> myString="Hello"
>>> myString[0]="J"   # change it to the string "Jello"

Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    myString[0]="J"   # change it to the string "Jello"
TypeError: 'str' object does not support item assignment

        这意味着,一旦创建对象(通常采用赋值的方式),其内容就不能再修改。

8、字符串函数

        常见的两种函数:len函数、eval函数

     8.1 len函数

        len函数用来寻找字符串的长度,即字符串中字符的数量。

>>> myStr="Hello World"
>>> len(myStr)
11

     8.2 eval函数

        eval(str [,globals [,locals ]])函数将字符串str当成有效Python表达式来求值,并返回计算结果。

>>> myString="3+4*2"
>>> eval(myString)
11
>>> eval(myString+"1") # 其实就是字符串先连接,后调用函数
87

9、字符串方法

     9.1 字符串方法

        方法是函数的变形,它们看起来非常相似。方法也有名称和用圆括号括起来的参数列表,它们的不同之处在于调用的方式。每个方法要结合给定的对象进行调用。调用采用点号(“.”)来表示。

        Python字符串的方法有很多,如下图:

        下面介绍几种常见的方法:

        upper方法:小写变大写。

>>> myString="Python rules"
>>> myString.upper()
'PYTHON RULES'

        find方法:在主调字符串(使用点标记调用该方法的对象)内部定位一个子串。

>>> myStr="mellow yellow"
>>> myStr.find('m')
0
>>> myStr.find('ll')
2
>>> myStr.find('z')
-1

        split方法:分割字符串,形式为s.split([sep[,maxsplit]])。

>>> a="Another test string that I have defined"
>>> a.split()  # 默认为按空格分割
['Another', 'test', 'string', 'that', 'I', 'have', 'defined']
>>> a.split(" ") # 按空格分割,同上
['Another', 'test', 'string', 'that', 'I', 'have', 'defined']
>>> a.split("t") # 按字符串中的t分割
['Ano', 'her ', 'es', ' s', 'ring ', 'ha', ' I have defined']
>>> a.split("t",2) # 按t分割,且分割两次
['Ano', 'her ', 'est string that I have defined']

        replece方法:字符替换,形式为s.replce(old,new[,count])。

>>> a="Another test string that I have defined"
>>> a.replace("e","o") # 用字符o来替换字符e
'Anothor tost string that I havo dofinod'
>>> a.replace("e","o",2) # 用字符o来替换字符e,且替换次数不超过两次
'Anothor tost string that I have defined'
>>> a.replace("e","o",8) # # 用字符o来替换字符e,且替换次数不超过八次
'Anothor tost string that I havo dofinod'

        isdigit方法:如果字符串只包含数字则返回true,否则为false。形式为s.isdigit()。

>>> a="Hello World"  # 没有数字
>>> a.isdigit()
False
>>> b="Hello World 123"  # 一部分数字
>>> b.isdigit()
False
>>> c="123456"  # 全为数字
>>> c.isdigit()
True

     9.2 方法链

        即可以链接方法和函数。调用顺序的规则是由左向右,使用前一个方法产生的对象作为下一个方法的主调对象。

>>> myString="Python rules"
>>> myString.upper()
'PYTHON RULES'
>>> myString.upper().find('O')
4

     9.3 方法的嵌套

        方法或者函数可以作为参数,被别的方法或者函数调用。

>>> aString="He had the bat"
>>> aString.find('t')
7
>>> aString.find('t',8)
13
>>> aString.find('t',aString.find('t')+1)
13

     9.4 选择方法的名字和参数

        名字提示:在IDLE中输入对象(变量)的名字、点号。

        参数提示:在IDLE中输入对象(变量)的名字、点号、第一个圆括号。

   10、字符串格式化

        格式字符串中的信息和其他任何字符串一样进行显示。有一种特殊的情况,即用百分号(%)开头的特殊字符序列。这表明在字符串中出现%的位置,将会做一次替换。用命令结尾处圆括号中的数据来替换%。

        字符串格式化转换字符:

        例子:

>>> print "%s is %d years old." % ("Bill",25)
Bill is 25 years old.

        每条格式命令还可以指定如何显示特定数据对象的详细信息。格式命令的一般结构是:%[name][flags][width][.presicion]code。

        宽度描述符:我们可以给每个数据项指定字段宽度。指定的是显示字段的宽度,以数据占据的空格数来计算。如果指定了一个负值,数据在指示的宽度内左对齐;否则,默认情况下在指定的宽度内右对齐。

        例子:

>>> print "%s is %d years old." % ("Bill",25)
Bill is 25 years old.
>>> print "%10s is %-10d years old." % ("Bill",25)
      Bill is 25         years old.

        浮点数精度描述符:在显示浮点值时,需要控制小数点右侧的位数,即精度。精度用小数点后面加上一个整数来指定。

>>> import math
>>> print math.pi  # unformatted printing
3.14159265359
>>> print "pi is %.4f" % (math.pi)  # floating-point precission 4
pi is 3.1416
>>> print "pi is %8.4f" % (math.pi)  # specify both precision and width
pi is   3.1416

 


参考文献:

1、《Python入门经典:以解决计算问题为导向的Python编程实践》

2、Python学习手册(第2版)

3、Python字符串

4、Python字符串


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值