Python应用轻松入门
上QQ阅读APP看书,第一时间看更新

3.2 字符串类型

字符串,例如s='床前明月光',是字符的序列表示,单行字符串可以用一对单引号('…')或一对双引号("…")表示。多行字符串可以用一对三单引号('''…''')或者一对三双引号("""…""")表示,示例代码如下:

    #//第3章/3.1.py
    print('单引号里可以用"双引号"。')
    print("双引号里可以用'单引号'。")
    print()
    s='''床前明月光
    疑是地上霜
    '''
    print(s)

运行结果如下:

    单引号里可以用"双引号"。
    双引号里可以用'单引号'。
    床前明月光
    疑是地上霜

如果在字符中使用特殊字符,则必须用反斜杠“\”与后面相邻的一个字符共同表示新含义,反斜杠“\”称为转义字符,如“\”在行尾表示续行、\n表示换行、\\表示反斜杠、\'表示单引号、\"表示双引号等,示例代码如下:

    print('床前明月光\n疑是地上霜')
    print("双引号里通常不能再用双引号,\n\"除非转义符上场\"")

运行结果如下:

    床前明月光
    疑是地上霜
    双引号里通常不能再用双引号,
    "除非转义符上场"
1.字符串的索引和切片

字符串的序列有两种形式,从左到右的序列为正向序列,从右到左的序列为反向序列,它们的关系如下:

    P y t h o n
    0 1 2 3 4 5
    -6-5-4-3-2-1

对其中一个元素的访问称为索引,示例代码如下:

    s='Python'
    print(s[0])
    print('Python'[-6])

运行结果如下:

    P
    P

对其中多个元素的访问称为切片,示例代码如下:

    s='Python'
    print(s[0:3])          #不包含右边界
    print(s[-6:-3])              #从左向右切片
    print(s[0:5:2])                #每两个取一个

运行结果如下:

    Pyt
    Pyt
    Pto

s[0:5:2]的第1个参数0表示从0索引位置开始,第2个参数5表示到第5个索引位置结束,第3个参数2表示每两个取一个,如果改为3,则表示每3个取一个。不包含结束索引位置(右边界)。

2.在字符串中加入变量

在字符串中加入变量,可以用'...'.format()进行控制,示例代码如下:

    #//第3章/3.2.py
    x='上海'
    y='海上'
    print('{}自来水来自{}'.format(x,y))       #字符串中的变量用{}占位,()内按顺序给出
    print('{1}自来水来自{0}'.format(x,y))         #用变量索引指定变量,与字符串索引相同
    print('{0}自来水来自{0}'.format(x))           #{}与变量数不一致,用变量索引指定变量
    print('{0}自来{{水}}来自{0}'.format(x))       #两对{{}}输出一对{}

运行结果如下:

    上海自来水来自海上
    海上自来水来自上海
    上海自来水来自上海
    上海自来{水}来自上海
3.字符串的格式化

format()命令还可以对字符串进行格式化,方法是在变量占位符{}内用<填充><对齐><宽度><,><.精度><类型>共6个字段进行控制,示例代码如下:

    #//第3章/3.3.py
    x='天安门'
    #x长5个字符,如果不足5个,则用*填充,^表示居中,<表示左对齐,>表示右对齐
    print('我爱北京{:*^5}'.format(x))
    #x长5个字符,如果不足5个,则默认用空格填充,左对齐
    print('我爱北京{:5}'.format(x))
    #变量长2个字符,如果不足,则用0填充,左对齐
    print('{:02}.jpg'.format(1))
    #逗号分隔数字
    print('我要学习Python,每天只能学习{:,}秒'.format(24*3600))
    #缺省时,数字不分隔
    print('我要学习Python,每天只能学习{}秒'.format(24*3600))
    #.2表示小数长度为2位
    print('我要学习Python,每天只能学习{:.2}秒'.format(3.1415926))
    #.2%表示用百分号表示小数,保留两位小数,e和E表示科学记数法,f表示浮点数
    print('我要学习Python,每天只能学习{:.2%}秒'.format(3.1415926))
    #b、o、d、x分别表示二进制、八进制、十进制、十六进制
    print('我要学习Python,每天只能学习{:b}秒'.format(24))

运行结果如下:

    我爱北京*天安门*
    我爱北京天安门
    01.jpg
    我要学习Python,每天只能学习86,400秒
    我要学习Python,每天只能学习86400秒
    我要学习Python,每天只能学习3.1秒
    我要学习Python,每天只能学习314.16%秒
    我要学习Python,每天只能学习11000秒

综上所述,format()命令的完整格式为"{变量索引号:变量格式控制}".format(变量0,变量1…)。

六字段记忆口诀:田队长逗点泪,田队长说了个笑话逗得大家留下点眼泪。田谐音“填”,队谐音“对”,长同“长”,逗对“,”,点对“.”,泪对“类”。