容器类型的进阶使用(字符串)
- 字符串的拼接与重复
- 字符串的跨行拼接
- 字符串的索引和切片
- 字符串的内置函数
- 字符串的转义
- 字符串和格式化和format内置函数的使用
目录
- 容器类型的进阶使用(字符串)
- 本文目录
- 字符串的拼接和重复
- 字符串的跨行拼接
- 字符串的索引
- 字符串的切片
- 作用
- 使用方法
- 字符串的内置函数
- capitalize
- title
- upper
- lower
- swapcase
- count
- find和index
- startswith和endswith
- isupper和islower
- isdecimal
- ljust、rjust、center
- strip、lstrip、rstrip
- split和rsplit
- join
- replace
- 字符串的转义
- 转义字符的使用
- 主要的转义字符
- 格式化字符串
- 占位符
- 整型占位符
- 浮点型占位符
- 字符串占位符
- format函数的使用
- 顺序传参
- 索引传参
- 关键字传参
- 容器类型传参
- 填充符号的使用
- 进制转换符号的使用
字符串的拼接和重复
# 1、可以使用 + 将多个字符串拼接起来res = 'hello' + ' ' + 'motherland'print(res)# 2、可以使用 * 将一个字符串重复res = 'hello ' * 3print(res)"""结果:hello motherlandhello hello hello """字符串的跨行拼接接下来我们要学习的是python中的一个符号 , 跨行拼接符\ 。这个符号的作用就是如果一行的代码过长 , 可以使用这个符号达到换行的作用 , 而原本语句的作用不变 。
# 如果变量char1的定义没有 \ 就是语法错误 。char = 'hello'char1 = \ 'hello'# 字符串的跨行拼接# 使用 \ 可以实现将在不同行的字符串拼接起来 , 就是说在换行的时候 , 可以使用 \ 代替 +char = 'hello' + 'motherland'char1 = 'hello' \'motherland'# 当然换行依然可以使用 +char2 = 'hello' + \'motherland'字符串的索引我们之前说过 , 字符串和列表、元组这三种容器的共同特点是 , 有序、可获取 , 且都存在正逆向下标索引 。var = 'hello'print(var[1]) # e字符串的切片切片顾名思义 , 就是将字符串进行分截 , 依此来获取所需要的元素(切片 == 截取) 。语法:string[开始索引:结束索引:间隔值]
作用从开始索引所在的元素按照间隔值截取至结束索引前一个的元素 , 结束索引对应的元素不会被获取 。
使用方法
- [开始索引:] :截取从开始索引至最后一个元素 , 间隔值默认为1
var = 'hello motherland'res = var[5:]print(repr(res))# ' motherland' - [:结束索引]:截取从第一个元素至结束索引前一个的元素 , 间隔值默认为1
var = 'hello motherland'res = var[:5]print(repr(res))# 'hello' - [开始索引:结束索引]:截取从开始索引至结束索引前一个元素 , 间隔值默认为1
var = 'hello motherland'res = var[3:8]print(repr(res))# 'lo mo' - [开始:结束:间隔]:和第三点相同 , 但是按照指定的间隔值截取
var = 'hello motherland'# 从指定位置截取res = var[3:8:2]print(repr(res))# 'l o'# 默认从0开始截取res = var[:8:2]print(repr(res))# 'hlom'# 倒序截取res = var[::-1]print(repr(res))# 'dnalrehtom olleh' - [::]、[:]:这两种为截取所有的字符串
# 截取所有的var = 'hello motherland'# 从指定位置截取res = var[:]print(repr(res))# 'hello motherland'# 默认从0开始截取res = var[::]print(repr(res))# 'hello motherland'
print(help(str))函数作用capitalize首字母大写title每个单词的首字母大写upper所有字母大写lower所有字母小写swapcase大小写互换count计算某个字符的数量find查找某个字符串首次出现的索引位置 , 找不到返回-1index查找某个字符串首次出现的索引位置 , 找不到报错startswith判断是否以某个字符串开头 , 返回布尔值endswith判断是否以某个字符串结尾 , 返回布尔值isupper判断字符串是否都是大写 , 返回布尔值islower判断字符串是否都是小写 , 返回布尔值istitle判断字符串是否每个单词都是首字母大写isalnum判断字符串是否都是由数字、字母、汉字组成的isspace判断字符串是否是只有空白符组成的isdecimal判断字符串是否都是数字组成的 , 返回布尔值ljust填充字符串 , 原字符串居左 , 返回新的字符串rjust填充字符串 , 原字符串居右 , 返回新的字符串center填充字符串 , 原字符串居中 , 返回新的字符串strip去掉首尾两边的空白符 , (默认为空白符 , 可以指定)lstrip去掉左边的空白符 , (默认为空白符 , 可以指定)rstrip去掉右边的空白符 , (默认为空白符 , 可以指定)split按照指定的字符将字符串分隔成列表rsplit按照指定的字符将字符串从右往左分隔成列表join按照某个字符串将容器转成字符串replace将字符串中的字符替换成为其它的format字符串的格式化capitalize
var = 'hello motherland'res = var.capitalize()print(res)# Hello motherlandtitlevar = 'hello motherland'res = var.title()print(res)# Hello Motherlanduppervar = 'hello motherland'res = var.upper()print(res)# HELLO MOTHERLANDlowervar = 'HELLO MOTHERLAND'res = var.lower()print(res)# hello motherlandswapcasevar = 'Hello Motherland'res = var.swapcase()print(res)# hELLO mOTHERLANDcount语法:string.count(sub, [start,], [end])string.count(字符串 , [开始值索引] , [结束值索引])
# 注意count区分大小写var = 'Hello Motherland'res = var.count('h')print(res)# 1res = var.count('H', 3, 10)print(res)# 1find和index语法:string.find(sub, [start,], [end])语法:string.index(sub, [start,], [end])
# find和index服务大小写var = 'Hello Motherland'res = var.find('h')print(res)# 9res = var.index('h')print(res)# 9# 如果该字符查找不到 , find返回-1 , index报错res = var.find('m', 3)print(res)# -1res = var.index('m', 3)print(res)# error# find只会返回正向索引 , 所以不用担心如果查找的字符本身就是最后一个怎么办var = 'Hello Motherland'res = var.find('d')print(res)# 15print(len(var)) # 16startswith和endswith语法:startswith(prefix, [start], [end])语法:endswith(suffix, [start], [end])
var = 'Hello Motherland'# 查看整个字符串是否是以Hello开头res = var.startswith('Hello')print(res)# True# 查看这个字符串在索引6的位置是否是以Mother开头的res = var.startswith('Mother', 6)print(res)# True# 查看整个字符串是否是以aad结尾res = var.endswith('aad')print(res)# Falseisupper和islowervar = 'Hello Motherland'# 判断字符串是否都是大写res = var.isupper()print(res)# False# 判断字符串是否都是小写res = var.islower()print(res)# Falseisdecimalvar = '20666'# 判断字符串是否都是数字组成res = var.isdecimal()print(res)# Trueljust、rjust、center语法:string.ljust(width, [fillchar])指定一个长度 , 如果字符串的长度不够 , 就按照指定的字符串补足 , 默认使用空格 , 补足用的自妇产长度不能超过1 。
var = 'Hello Motherland'res = var.ljust(20)print(repr(res))# 'Hello Motherland'res = var.rjust(30, 'm')print(res)# mmmmmmmmmmmmmmHello Motherlandprint(len(res))# 30res = var.center(30, '-')print(res)# -------Hello Motherland-------strip、lstrip、rstripvar = 'Hello Motherland'# 去掉首尾两边的字符串res = var.strip()print(repr(res))# 'Hello Motherland'var = 'mmmmmmmmHello Motherlandmmmmmm '# 去掉左边的res = var.lstrip('m')print(repr(res))# 'Hello Motherlandmmmmmm'# 去掉右边的res = var.rstrip('m')print(repr(res))# 'mmmmmmmmHello Motherlandmmmmmm '# 最右边不是 m 开头 , 所以不能去掉split和rsplitvar = 'Hello my motherland'# 默认按照空格分隔 , 全部分隔res = var.split()print(res)# ['Hello', 'my', 'motherland']# 指定分隔的次数res = var.split(' ', 1)print(res)# ['Hello', 'my motherland']# 指定分隔的字符res = var.split('l')print(res)# ['He', '', 'o my mother', 'and']# rsplit 从右到左分隔res = var.rsplit('l')print(res)# ['He', '', 'o my mother', 'and']# 咦?rsplit的结果怎么和rsplit的一样?rspltd的意思不是列表的元素的排列结果是从右往左的 , 而是从字符串的右边开始找一个字符 , 如果只是分隔一次我们就可以看出结果的不同 。# rsplit 从右到左分隔res = var.rsplit('l', 1)print(res)# ['Hello my mother', 'and']# split 从左到右分隔res = var.split('l', 1)print(res)# ['He', 'lo my motherland']# 看出之间的区别了吗?joinlst = ['h', 'e', 'l', 'l', 'o']res = '-'.join(lst)print(res)# h-e-l-l-ostring = 'hello'res = '-'.join(string)print(res)# h-e-l-l-oreplace语法:string.replace(old, new, [count])var = 'hello hello my motherland'# 替换其中的字符res = var.replace('hello', '你好')print(res)# 你好 你好 my motherland# 替换其中的一个字符res = var.replace('hello', 'hi', 1)print(res)# hi hello my motherland字符串的转义转义字符的使用python中的转义字符指的是\ , 它的作用是将本符号之后的字符有意义的变得无意义 , 无意义的变得有意义 。无意义的字符指的是单纯的就是一个字符串的字符;有意义的字符指的是不是表面上你看到的那个样子 , 而是另有一层特殊的含义的字符 。
主要的转义字符符号作用\n换行(Unix or Linux)\r\n换行(windows)\t缩进\r将本行后面的所有字符代替本行前面的所有字符\b退格符 , 删除一个字符
var = 'hello\nmotherland'print(var)print()var = 'hello\r\nmotherland'print(var)print()var = 'hello\tmotherland'print(var)print()var = 'hello\rmotherland'print(var)
文章插图
# 退格符用来删除一个字符strvar = 'abcde\bfg'print(strvar)# abcdfg有一些特殊的路径地址当中会有一些转义字符 , 但是我们并不希望这些转义字符能够执行 , 就可以使用原型输出 。# 路径被转义 , 如何解决?var = 'C:\Windows\twain_32'print(var)# C:\Windows wain_32# 方法一:使用 \ 将转义字符变得没意义var = 'C:\Windows\\twain_32'print(var)# C:\Windows\twain_32# 方法二:使用repr函数 , 原型化输出var = 'C:\Windows\twain_32'res = repr(var)print(res)# 'C:\\Windows\twain_32'# 方法三:使用元字符'''在字符产前加上 r 表示这段字符串原型化输出 , 不再执行字符串内的任何转义字符 。'''var = r'C:\Windows\twain_32'print(var)# C:\Windows\twain_32格式化字符串在字符串中使用占位符替代某个字符 , 这样该位置的字符可以随意的替换 。占位符
- %d整型占位符
- %f浮点型占位符
- %s字符串占位符
# 可以填写整数var = '我有%d块钱' % (100)print(var)# 我有100块钱# 也可以填写小数 , 但是显示的效果是整数var = '我有%d块钱' % (100.99)print(var)# 我有100块钱# 填写布尔值 , 转成对应的整数类型var = '我有%d块钱' % (True)print(var)# 我有1块钱浮点型占位符和整型一样 , 可以填写整数、小数、布尔值# 可以填写小数var = '我汽车的排量是%fT' % (2.0)print(var)# 我汽车的排量是2.000000T# 也可以填写整数 , 但是显示的效果是小数var = '我汽车的排量是%fT' % (2)print(var)# 我汽车的排量是2.000000T# 可以看得出 , 小数点保留的太多了字符串占位符可以填写任何的python合法类型# 可以填写小数var = '我汽车的排量是%sT' % (2.0)print(var)# 我汽车的排量是2.0T# 也可以填写整数 , 但是显示的效果是小数var = '我汽车的排量是%sT' % (2)print(var)# 我汽车的排量是2T# 也可以填写整数 , 但是显示的效果是小数var = '我汽车的排量是%sT' % (True)print(var)# 我汽车的排量是TrueT# 多个占位符的使用var = '我的汽车是%s, 花了%d万 , 占我总资产的%f%%' % ('比亚迪', 50, 0.000001)print(var) # 我的汽车是比亚迪, 花了50万 , 占我总资产的0.000001%# 注意 , 在格式化字符串的时候 , 如果要单独的打印一个% , 就需要输入两个%% , 以消除%的占位符含义 。format函数的使用format的作用也是格式化字符串 , 但是比上述的方式更加的强大 。format使用大括号代替占位符 , 将值作为自己的参数进行传参 。
语法:'string{}{}'.format(value1,value2)
顺序传参按照占位符和值的顺序一对一的进行传参
# 可以传递任何的数据类型 , 默认就是一个字符串占位符 。var = '{} {}'.format('hello', 'motherland')print(var)# hello motherland索引传参在中括号中填入format参数的索引值 , 进行传参# 不支持逆向下标索引var = '{1} {0}'.format('hello', 'motherland')print(var)# motherland hello关键字传参给参数冠以关键字 , 然后在中括号中填写关键字的名称 , 关键字根据名称对应的传值 。var = '{msr} {world}'.format(msr='hello', world='motherland')print(var)# hello motherland容器类型传参如果参数是一个容器类型的数据 , 可以在中括号中填入容器对应的索引值进行传参 。lst = ['hello', 'goodbye']tup = ('my', 'your')dit = {'one': 'motherland', 'two': 'world'}# 不指定容器中的元素var = '{} {} {}'.format(lst, tup, dit)print(var) # ['hello', 'goodbye'] ('my', 'your') {'one': 'motherland', 'two': 'world'}# 指定元素# 字典的键不需要添加引号var = '{[0]} {[0]} {[one]}'.format(lst, tup, dit)print(var)# hello my motherland填充符号的使用可以使用填充符号将长度不够的字符串补位- ^原字符串居中
- >原字符串居右
- <原字符串居左
例:{who:*^10}who : 关键字参数 , 或者是下标索引*: 要填充的字符(默认填充空格)^: 原字符串的位置(默认靠左)10: 总字符长度 = 原字符串长度 + 填充字符长度【字符串 容器类型的进阶使用】var = '{price:-^20}'.format(price='价格')print(var) # ---------价格---------# 注意 , 中间的 : 不可或缺var = '{:*^10}'.format('价格')print(var) # ****价格****进制转换符号的使用