第3课 字符串
1、字符串的定义:单引号--' '、双引号--" "、三单--''' '''、三双--""" """
1)单引号和双引号必须成对出现,不能一半用单引号,一半用双引号
>>> 'name is tom' 'name is tom'
>>> "name is jim" 'name is jim'
2) 单引号里面不能嵌套单引号,如果要嵌套的话,需要转义
>>> 'Let\'s go ' "Let's go "
3)或者外面用双引号,里面用单引号
>>> "It's great" "It's great"
4)再或者外面用单引号,里面用双引号
>>> 'His name is "hahaer"' 'His name is "hahaer"'
5)三单或者三双可以用来换行做多行注释
>>> ''' ...从明天起, ...做一个快乐的人, ...睡到自然醒! ...''' '\n...从明天起,\n...做一个快乐的人,\n...睡到自然醒!\n...'
三双作为多行注释
>>> """ ---迎着太阳奔跑 ---汗水洒落地面 ---""" '\n---迎着太阳奔跑\n---汗水洒落地面\n---'
6)单行注释:# 快捷键 Ctrl + / 。
fileName = temp[0].strip().split('.')[1] # 文件格式
2、字符串的拼接
1)用加号(+)作为连接符
>>> 'name is ' + 'tom' 'name is tom'
2) 字符串和数字不能用加号(+)拼接; str + int 会报错
>>> 'age is ' + 18 Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> 'age is ' + 18 TypeError: must be str, not int
3)只有两个都为string类型,才能用+拼接
>>> 'age is ' + '16' 'age is 16'
4)使用乘号(*)作为连接符
>>> 'python' * 3 'pythonpythonpython'
3、序列--str类型
1)由多个元素组成;
2)有编号---下标(index)
3)从左到右,index值从0到(长度-1)。没有str1[len(str1)],这样会报下标越界
>>> str1 = 'python' >>> len(str1) 6 >>> str1[6] Traceback (most recent call last): File "<pyshell#7>", line 1, in <module> str1[6] IndexError: string index out of range
4)负下标,从右到左,index从-1开始,-2...到-n。n为字符串的长度
>>> str1 = 'name is tom' >>> str1[-1] 'm' >>> len(str1) 11 >>> str1[-11] 'n'
4、切片:左含右不含,对切片对象没有影响。被切对象是什么,切完还是什么对象类型。
1)取中间段:string1[start:end],从start开始,到end结束,但不包括end。等价于:string1[start:start+切的内容长度]
>>> str1 = 'name is tom' >>> # 从str1中提取is >>> str1[5:5+2] # 左含右不含 'is'
2)取前面一段:string1[:end],从第一个字符开始,到end位置结束,但是不包括end。
>>> str1 = 'It is a fine day' >>> str1[:13] 'It is a fine ' >>>
3)取后面一段:string1[start:],从start开始,到字符串结束。
>>> str1 = 'It is a fine day' >>> str1[8:] 'fine day'
4)使用负下标切片
>>> str1 = 'It is a fine day today' # 使用负下标切fine >>> str1[-14:-14+5] 'fine '
5)使用负下标举例。下面是日志文件,记录游戏中某个人物进入聊天室,并且他们的等级是多少。每行记录一个进入的人,前面是时间戳,固定长度。要求
从每行日志字符串中把用户id取出来
11:12:11>001 enter chatroom, level2
11:12:16>003 enter chatroom, level 25
>>> str1= '11:12:11> 001 enter chatroom, level 2' >>> str2 = '11:12:16> 003 enter chatroom, level 25' >>> str1[11:11+3] # 从0开始,到>后面的0刚好是第10位 '01 ' >>> str1[10:10+4] # 包含第10位,就算左含右不含,后面也多出一位,即空格 '001 ' >>> str1[10:10+3] '001' >>> str2[10:10+3] '003' >>>
思考,上面的例子为毛不用负下标切片呢?因为后面的位数是不固定的。下面的例子可以用负下标切片,因为后面的位数是固定的。
11:12:16> level2,005 enter chatroom
>>> str13 = '11:12:16> level2,005 enter chatroom' >>> str13[-18:-18+3] '005'
5、获取字符串的长度,注意:在字符串中‘\n’和‘\t’都是一个字符
>>> str1 = 'name is \n tom' >>> len(str1) 13 >>> str2 = '\n' >>> len(str2) 1 >>> str3 = 'name is \t tom' >>> len(str3) 13 >>> str4 = '\t' >>> len(str4) 1
6、学习一个内部函数:swapcase(),将字符串中的字符大小写转换。
>>> str1 = 'aaBBccDD' >>> str1.swapcase() 'AAbbCCdd' >>> str2 = 'EEffGGhh' >>> str2.swapcase() 'eeFFggHH'
1)与upper()的区别是:upper()是将字符串中的字符全部转换大写
>>> str1 = 'AbCdEfgh' >>> str1.upper() 'ABCDEFGH'
2)与lower()的区别:lower()是将字符串中的字符全部转换为小写
>>> str2 = 'YYZZxxaabbccDD' >>> str2.lower() 'yyzzxxaabbccdd'