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函数
ev
>>> 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版)