Python 基础之字符串操作,函数及格式化format

  1. 字符串的相关操作
  2. 字符串的相关函数
  3. 字符串的格式化format

1.字符串的相关操作
(1)字符串的拼接 +
strvar1 = "我爱你,"
strvar2 = "亲爱的姑凉"
res = strvar1 + strvar2
print(res)

(2)字符串的重复 *
strvar1 = "重读的事情说三遍"
strvar1 = strvar1*3
print(strvar1)

(3)字符串的跨行拼接 \
str1 = "dsdqbidwqdwqdb"\
"ewqhoqheoq"\
"你好明天"
print(str1)

(4)字符串的索引
#         0 1 2 3 4 5
strvar = "道路一片光明"
#       -6 -5 -4 -3 -2 -1
res = strvar[4]
print(res)
res = strvar[-2]
print(res)


(5)字符串的切片:切片就是截取字符串的意思
语法 =》 字符串[::]  完整格式: [开始索引:结束索引:间隔值]
   1[开始索引] 从开始索引截取到字符串的最后
   2[:结束索引] 从开头截取到结束索引之前(结束索引-1
   3[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1
   (4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔值截取字符
   5[:] [::] 截取所有字符

strvar = "爱往者爱返,福往者福来"
#1[开始索引] 从开始索引截取到字符串的最后
res = strvar[3:]
print(res)

#(2)[:结束索引] 从开头截取到结束索引之前(结束索引-1
res = strvar[:5]
print(res)

#3[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1
res = strvar[6:9]
print(res)

#4[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔值截取字符
#爱者返福者
# 0 2 4 6 8 爱 者 返 福 者
res = strvar[0:9:2]
print(res)

#end 不写一味的截取到最后
#3 6 9 爱 福 福
res = strvar[:3:3]
print(res)

#start 开始索引不写,意味着从头开始
# 0 4 爱返
res = strvar[:7:4]
print(res)

# 0 2 4 6 8 10 爱返者福者
strvar = "爱返者爱返,福往者福来"
res = strvar[::2]
print(res)

#倒序 -1 -2 -3 -4 。。。
res = strvar[::-1]
print(res)

#(5)[:] [::] 截取所有字符串
res = strvar[:]
res = strvar[::]
print(res)

2.字符串相关函数

(函数就是方法的意思,完成某个功能)

语法: 字符串.函数

常见的字符串函数如下:

capitalize 字符串首字母大写

title 每个单词的首字母大写

upper 将所有字母变成大写

lower 将所有字母变成小写

swapcase 大小写互换

len 计算字符串的长度

count 统计字符串中某个元素的数量

find 查找某个字符串第一次出现的索引位置

index find 功能相同 find找不到返回-1,index找不到数据直接报错

startswith 判断是否以某个字符或字符串为开头

endswith 判断是否以某个字符或字符串结尾

isupper 判断字符串是否都是大写字母

islower 判断字符串是否都是小写字母

istitle 判断字符串是否每个单词都首字母大写

isalnum 判断字符串是否是由数字、字母、汉字组成

isalpha 判断字符串是否由字母或文字组成

isdigit 检测字符串数是数字组成 接受二进制字节流

isdecimal 检测字符串是否以数字组成  必须是纯数字

isnumeric 检测字符串是否以数字组成 接受中文""

isspace   判断字符串是否由空白符组成

split 按某字符将字符串分割成列表(默认字符是空格)

join  按某字符将列表拼接成字符串(容器类型都可)

splitlines 按换行来进行切分(\n)

zfill  填充字符串(默认填充0,原字符串右对齐)

ljust  填充字符串,原字符居左 (默认填充空格)

rjust  填充字符串,原字符居右 (默认填充空格)

center 填充字符串,原字符居中 (默认填充空格)

strip  默认去掉首尾两边的空白符

rstrip 去掉右边某个字符

lstrip 去掉左边某个字符

replace()

功能:   把字符串的旧字符换成新字符

格式:   字符串.replace('旧字符','新字符'[, 限制替换的次数])

返回值: 替换之后的字符串

 

#maketrans translate 是一对

maketrans()

功能:   制作用于字符串替换的映射表

格式:   字符串.maketrans('查找字符','替换字符')两个字符必须长度相等

返回值: 字典

translate()

功能:   进行字符串替换操作

格式:   字符串.translate(maketrans返回的字典)

返回值: 替换之后的字符串

 

以下对一些相对比较常用的进行讲解举例:

1 .capitalize 字符串首字母大写,除了首字母后的字母都会变成小写
strvar = "this is my world"
res = strvar.capitalize()  #这句话的首字母变成了大写
print(res)

2 .title 每个单词的首字母大写 (非字母类的就可以让后面字符大写)
# strvar = "this is my world"
strvar = "this is 222my ###world"  #即使有什么别的数字也能识别到单词并使其首字母变成大写
res = strvar.title()
print(res)

3 .upper 将所有字母变成大写
4 .lower 将所有字母变成小写
strvar = "abcdefdqd"
res = strvar.upper()
print(res)
res = strvar.lower()
print(res)

5 .swapcase 大小写互换
strvar = "aa bYYYYbb cHHHHHc ddd www "
res = strvar.swapcase()
print(res)

6 .len 计算字符串的长度 (所有容器类型数据都可以使用len
strvar = "阿士大夫撒地方撒旦法师打发尽快哈手机看地方撒即可劳动防护"
res = len(strvar)
print(res)

7 .conut 统计字符串中某个元素的个数
strvar = "阿士大夫撒地方撒旦法师打发尽快哈手机看地方撒即可劳动防护可以可以可以"
res = strvar.count("")
print(res)

8 . find 查找某个字符串第一次出现的索引位置
find("字符串",start,end) 从哪里找到哪里结束 高位end取不到
如果find没找到 , 返回-1

strvar = "oh Father This is mY Favorate girl , her name is LL"
res = strvar.find("F")
print(res)
res = strvar.find("name")
print(res) #这个单词从41开始

#如果有开始,没有结束,默认查找到最后
res = strvar.find("F",4)
print(res)
res = strvar.find("s",14,16) #-1
print(res)
9 .index find 功能相同 find找不到返回-1,index找不到数据直接报错
# index index find 用法一样,只不过如果找不到直接报错
# 推荐使用find ****
# res = strvar.index("!") #ValueError: substring not found

10 .startswith 判断是否以某个字符或字符串为开头
"""endswith startswith("字符串",start,end) 高位end取不到"""

strvar = "oh Father This is mY Favorate girl , her name is LL"
res = strvar.startswith("oh")
print(res) #判断Ture False

res = strvar.endswith("L")
print(res)
print(len(strvar))
#有点问题
res = strvar.endswith("s",6,47)  #
print(res)
res = strvar.endswith("r",-6,-1)
print(res)
"""
#自己举的例子
s = "1234567"
res = len(s)
print(res)
res = strvar.endswith("5",1,4)
print(res)
"""
11.isalpha 判断字符串是否由字母或文字组成
strvar = "sddfqwfqfqwq321231"
print(strvar.isalpha())
strvar = "qweqeqeq是你"
print(strvar.isalpha())

12 .isdigit 检测字符串数是数字组成 接受二进制节流(可以用于检测字符串是否是数字)
strvar = "12345678954321"
res = strvar.isdigit()
print(res)

#
二进制字节流:用来存储或传输数据用的一种数据
语法: b'字符串'  b后面的字符串只能是ascii编码中的字符集
byte 字节 bytes 字节流
'a'  字符 "aaa" 字符串

如果是中文字符 ,需要用encode decode

strvar = b'123456'
print(strvar,type(strvar))
# strvar = b"中国人站起来了" #error  因为编码不识别
# print(strvar)

res = strvar.isdigit()
print(res)

13.isdecimal 检测字符串是否以数字组成  必须是纯数字
strvar = "2132546"
#star = b'23456' #error
res = strvar.isdecimal()
print(res)

14 .split 按某字符将字符串分割成列表(默认字符是空格)
strvar = "you can you up no can no bb"
res = strvar.split() #默认按照空格分隔
print(res)

strvar = "you:can:you:up:no:can:no:bb"
res = strvar.split(":")
print(res)
#可以接受2个参数,第二个参数意味着分隔几次(从左到右)
res = strvar.split(":",3) #意思只分隔三次,另外的不分
print(res)

#可以反向分隔 rsplit (从右到左)
res = strvar.rsplit(":",2)
print(res)

15. join 按某字符将列表拼接成字符串 (容器类型都可)
lst = ['you', 'can', 'you', 'up', 'no', 'can', 'no', 'bb']
res = '+'.join(lst)
print(res)
res = '|'.join(lst)
print(res)
res = ' '.join(lst)
print(res)

16 .center 填充字符串,原字符居中 (默认填充空格)
'''  原字符个数+要填充的字符一共10个  '''
strvar = "你好"
res = strvar.center(10,"!") #可以选择要填充的符号
print(res)
res = strvar.center(10) #如果不写默认填充空格
print(res)

17 .strip  默认去掉首尾两边的空白符 (空格 \n \t \r\n)

#可用于input输入后
strvar = "\t 大妹子真漂亮 \n"
print(strvar)
res = strvar.strip()
print(res)

18 . replace()
strvar = "可爱滴小狼狗喜欢吃肉,有没有,有没有,还有没有"
# replace("原字符串","要替换的字符串",[可选择替换几次])
res = strvar.replace("有没有","真没有")
print(res)
res = strvar.replace("有没有","真没有",1)  #只换了一次
print(res)

还有以下没有举例子的字符串的方法:

isupper 判断字符串是否都是大写字母

islower 判断字符串是否都是小写字母

istitle 判断字符串是否每个单词都首字母大写

isalnum 判断字符串是否是由数字、字母、汉字组成

isnumeric 检测字符串是否以数字组成 接受中文""

isspace   判断字符串是否由空白符组成

splitlines 按换行来进行切分(\n)

zfill  填充字符串(默认填充0,原字符串右对齐)

ljust  填充字符串,原字符居左 (默认填充空格)

rjust  填充字符串,原字符居右 (默认填充空格)

rstrip 去掉右边某个字符

lstrip 去掉左边某个字符

3.字符串的格式化.format

语法: {} 来进行占位
1)顺序传参
2)索引传参
3)关键字传参
4)容器类型数据(列表或元组)传参

5format的填充符号的使用( ^  >  <  

6)进制转换等特殊符号的使用( :d  :f  :s  :, 

 

(1)顺序传参
strvar = "{}{}一个飞吻".format("LT","HXD")
print(strvar)

(2)索引传参
strvar = "{1}{0}开了一枪,饮弹而亡".format("王杰","周亮")
print(strvar)

(3)关键字传参
strvar = "{hjy}{zyw}进行扫射,鸡飞狗跳,狗急跳墙".format(zyw="张文",hjy="黄勇")
print(strvar)

(4)容器类型传参
#1
strvar = "{0[1]}{1[1]}发一份情书和一张私人照片,鼻血直冒三千尺".format(["黄一政","刘五星","熊华"],("素江南","陈浩"))
print(strvar)
#(2)如果是字典,场景发生在format字符串格式化当中,主要通过键取值时,不要加上引号
strvar = "{group1}{group2[sjn]}发一份情书和一张私人照片,鼻血直冒三千尺"
res = strvar.format(group1 = ["黄一政","刘五星","熊华"],group2 = {"sjn":"素江南","ch":"陈浩"})
print(res)

(5)format的填充符号的使用( ^ > <
{who:*<10}
^ > <
^ :原字符串居中
> : 原字符串居右
< :原字符串居左
10 : 原字符 + 要填充的字符串 一共 10

strvar = "{who:*^10}在长春长生{something:>>10},心情{feel:!<10}"
res = strvar.format(who="潘伟成",something="扎一打疫苗",feel="爽歪歪")
print(res)

(6)进制转换等特殊符号的使用(:d :f :s :,
# :d 整型占位符
strvar = "潘柏买了{:d}个兰博基尼"
res = strvar.format(10)
print(res)

#:3d
strvar = "潘柏买了{:3d}个兰博基尼"
res = strvar.format(10)  #默认居右
print(res)

#:^3d
strvar = "潘柏买了{:^3d}个兰博基尼"
res = strvar.format(10)  #居中
print(res)
strvar = "潘柏买了{:>4d}个兰博基尼"
res = strvar.format(10) #居右
print(res)
strvar = "潘柏买了{:<4d}个兰博基尼"
res = strvar.format(10) #居左
print(res)

#:f 浮点型占位符98,94, :.2f小数保留2
strvar = "许经雄体重{:.2f}"
res = strvar.format(98.32131321)
print(res)

#:s 字符串占位符
strvar = "{:s}"
res = strvar.format("好看的皮囊千篇一律,有趣的灵魂200多斤")
print(res)

#:,金钱占位符
strvar = "{:,}"
res = strvar.format(2313131)
print(res)

猜你喜欢

转载自www.cnblogs.com/hszstudypy/p/10803152.html