Python字符串及正则表达式(一)

1.6.1字符串常用操作

1.6.1.1拼接字符串

使用”+”运算符可以完成对多个字符串的拼接,”+”元素安抚可以连接多个字符串并产生一个字符串对象
示例代码:

teacher ="Will"
content="主要负责Python自动化"

结果:

Will主要负责Python自动化

字符串不允许直接与其他类型的数据拼接。
示例代码:

name="李二狗"
course="语文成绩是"
score=97  #(int类型)
print(name+course+score)

结果:

Traceback (most recent call last):
  File "F:/PYHome/FrameVIP07/Unit5/Unit5class1.py", line 20, in <module>
    print(name+course+score)
TypeError: can only concatenate str (not "int") to str

那我们该如何解决这个问题呢?将int类型强转为string类型即可
示例代码:

name="李二狗"
course="语文成绩是"
score=97
print(name+course+str(score))

结果:

李二狗语文成绩是97

1.6.1.2计算字符串的长度

由于不同字符所占字节数不同,所以要计算字符串的长度,需要先了解各字符所占的字节数。在Python中,数字,英文,小数点,下划线,空格占一个字节;一个汉字可能占2-4个字节,占几个字节取决于采用的编码。在GBK当中占2个字节,在UTF-8编码占3个字节。
在Python中,提供了len()字符串的长度,len(String),通过len()函数计算字符串的长度时。不区分英文、数字和汉字,所有字符都占用1个字节,在实际开发过程中有时候需要获取字符串实际所占的字节数,这个时候就要使用encode()方法
示例代码:

#计算字符串的长度
str1 = "人生苦短,我用python!" #字符串1和2的区别一个是英文的',' 一个是中文的 ',
str2 ="人生苦短,我用python!"
print(len(str1))
print(len(str1.encode())) #获取utf编码下的字符长度
print(len(str2.encode())) #获取utf编码下的字符长度
print(len(str1.encode('GBK')) )#获取GBK编码下的字符长度
print(len(str2.encode('GBK')) )#获取GBK编码下的字符长度

运行结果:

14
28
26
21
20

1.6.1.3截取字符串

上一小节说过,字符串和列表、元组一样都是Python中的序列,所以要截取字符串,可以采用切片的方法实现。通过切片方法截取字符串的语法格式如下:
string[start: end:step]
string:要截取的字符串
start:表示要截取的第一个字符的索引(包括在字符),如果不指定,则默认为0
end:表示要截取的最后一个字符的索引(不包括该字符),如果不指定则默认字符串的长度
step:表示切片的步长,如果省略则默认为1,当省略该步长时,最后一个冒号也可以省略。
示例代码:

str1 = "人生苦短,我用python!"
substr1=str1[1]  #截取第2个字符
substr2=str1[5:] #从第6个字符进行截取
substr3=str1[:5] #从左边开始截取5个字符
substr4=str1[2:5]#从第3个字符截取到第5个字符
print(substr1)
print(substr2)
print(substr3)
print(substr4)

结果:

生
我用python!
人生苦短,
苦短,

1.6.1.4 分割、合并字符串

在Python中,字符串对象提供了分割和合并字符串的方法。分割字符串是把字符串分割为列表,而合并字符串是把列表合并为字符串,分割字符串和合并字符串可以看做是互逆操作。
1.分割字符串
字符串的对象的split()方法可以实现字符串分割,也就是把一个字符串按照指定的分割符切分为字符串列表。在列表的元素中,不包括分隔符。split()方法的语法格式如下:
str.split(sep,maxsplit)
str:表示要进行分割的字符串
sep:用于指定分割符
maxsplit:可选参数,用于指定分割的次数,如果不指定或者为-1,则分割次数没有限制,否则返回结果列表的元素个数,个数最多为maxsplit+1
返回值:分隔后的字符串列表。该列表的元素为以分隔符为界限分隔的字符串(不含分隔符),当该分隔符前面(或与前一个分隔符之间)无内容时,将返回一个空字符串元素。
说明:在split()方法中,如果不指定sep参数,那么也不能指定maxsplit参数。

示例代码:

str1="我的博 客 网 址 是>>>https://blog.csdn.net/qq_15650277?spm=1000.2115.3001.5343"
list1=str1.split() #采用默认分隔符进行分割
list2=str1.split('>>>') #使用>>>符号进行分割
list3=str1.split('.') #采用使用.分隔
list4=str1.split(' ',4)  #采用空格进行分割,并且只分割前4个
list5=str1.split('>')  #采用> 进行分割
print(list1)
print(list2)
print(list3)
print(list4)
print(list5)

运行结果:

['我的博', '客', '网', '址', '是>>>https://blog.csdn.net/qq_15650277?spm=1000.2115.3001.5343']
['我的博 客 网 址 是', 'https://blog.csdn.net/qq_15650277?spm=1000.2115.3001.5343']
['我的博 客 网 址 是>>>https://blog', 'csdn', 'net/qq_15650277?spm=1000', '2115', '3001', '5343']
['我的博', '客', '网', '址', '是>>>https://blog.csdn.net/qq_15650277?spm=1000.2115.3001.5343']
['我的博 客 网 址 是', '', '', 'https://blog.csdn.net/qq_15650277?spm=1000.2115.3001.5343']

2合并字符串
合并字符串与拼接字符串不同,他会将多个字符串采用固定的分隔符连接在一起。
格式: strnew=string.join(iterable)
strnew:表示合并后的生成的新字符串
String:字符串类型,用于指定合并时的分隔符
iterable:可迭代对象。该迭代对象中的所有元素(字符串)
可迭代对象中的每一个字符(除了第一个字符外)都会添加上string字符串类型
示例代码:

str1='@'.join(["苹果","香蕉","葡萄"])
print(str1)

结果:

苹果@香蕉@葡萄

1.6.1.5检索字符串

在python中提供了很多方法用于字符串查找的方法
1.count()方法
count()方法用于检索指定字符串在另一个字符串中出现的次数。如果检索的字符串不存在返回0,否则返回出现的次数
示例代码:

str1="zhaoqianxueli"
print(str1.count('z'))

结果:

1

2.find()方法
该方法用于检索是否包含指定的子字符串,如果检索字符串不存在,则返回-1,否则返回首次出现该字符串时的索引
Str.find(sub[,start[,end]])
str:表示原字符
sub:表示要检索的子字符串
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾
示例代码:

str1="zhaoqianxueli"
print(str1.find('a',1,5))

3.index方法
该方法和find()方法类似,只不过是使用index()方法,当指定字符不存在会抛出异常
4.startswith()方法
startswith方法用于检索字符串是否以指定子字符串开头。如果是则返回True,否则返回False
5.endswith()方法
endswith方法用于检索字符串是否以指定子字符串结尾。如果是则返回True,否则返回False

示例代码:

str1="zhaoqianxueli"
print(str1.startswith('z'))
print(str1.endswith('z'))

结果:

True
False

1.6.1.6字母的大小写转换

在Python中,字符串对象提供了lower()方法和upper()方法进行字母的大小写转化。
lower() 将大写字母转化为小写
upper()将小写字母转化为大写
示例代码:

str1="ZJAaoqianxueli"
print(str1.lower())
print(str1.upper())

结果:

zjaaoqianxueli
ZJAAOQIANXUELI

1.6.1.7 去除字符串中的空格和特殊字符

在Python中去除空格和特殊字符通常使用strip方法,lstrip去除左侧的空格和特殊字符,rstrip去除右侧的空格和特殊字符。

strip()方法用于去掉字符串左、右两测的空格和特殊字符
Str.strip[chars]
Str:原字符
chars:用于指定要去除的字符,如果不指定默认将去除空格、制表符”\t”、回车符”/r”和换行符”/n”
lstrip,rstrip 使用方法和strip一样,区别在于一个是去除左侧、一个是右侧

示例代码:

str1="@谷雨飞鱼@"
print(str1.strip('@'))
print(str1.lstrip('@'))
print(str1.rstrip('@'))

结果:

谷雨飞鱼
谷雨飞鱼@
@谷雨飞鱼

1.6.1.8格式化字符串

格式化字符串是指先定制一个模板,在这个模板中预留几个空位,然后再根据需要填上相应的内容。这些空位需要通过指定的符号标记(也称为占位符),而这些符号还不会显示出来。在Python中格式化字符串有以下两种方法:
1.使用”%”操作符
‘%[-][+][0][m][.n]格式化字符串’%exp

说明:
-:可选参数,指定左对齐,正数前方无符号,负数前面加负号
+:可选参数,指定右对齐,正数前方有符号,负数前面加负号
0:表示右对齐,正数前方无符号,负数前面加负号,用0填充空白
m:可选参数,表示占有宽度
.n:可选参数,表示小数点后保留的位数
格式化字符串:用于指定类型,其值如下表

格式化字符说明格式化字符说明
%s字符串%r字符串(采用repr()显示)
%c字符%o八进制整数
%d或%i十进制整数%e指数 基地写为e
%x十六进制整数%E指数
%f或%F浮点数%%字符%

exp:要转化的项如果有多个,需要通过元组的形式进行指定。
示例代码:

#左对齐 右对齐  -号和+号区别 一个是左对齐 一个是右对齐  10是指定占有的宽度,0是指定空位用0填充 .f是指定小数位,传递的参数大于2个要使用元组
	print("%-10d"%20)
	print("%-10d"%-20)
	print("%+10d"%-20)
	print("%+10d"%20)
	print("%010d"%20)
	print("%+10.2f"%-20)
print("%-10d+%09.2f"%(20,20))

结果:

20        
-20       
       -20
       +20
0000000020
    -20.00
20        +000020.00

2.使用字符串对象的format()方法
字符串对象提供了format()方法用于进行字符串格式化,需要使用”{}”和”:”指定占位符
Str.format(args)方法
Str:指定字符串的显示样式(模板)
args:用于指定要转化的项
format方法用于进行字符串格式化,语法格式()里面的内容为说明:
{[index(指定参数的位置索引值从0开始)][:[fill(指定空白处要填的字符)][align(指定对齐方式<左对齐 >右对齐;值为”=”时表示右对齐针对于数字类型)][sign:可选参数,用于指定有无符号数] #(是否显示二进制 八进制 十六进制标识) width[.precision(指定保留的小数位数)][typey(用于指定类型)] ]}

格式化字符说明格式化字符说明
s对字符串类型格式化b将十进制整数自动化转化成二进制表示再格式化
d十进制整数o将十进制整数自动化转化成八进制表示再格式化
c将十进制整数自动转化成对应的Unicode字符x或者X将十进制整数自动化转化成十六进制表示再格式化
e或者E转换为科学计数法表示格式化f或者F转换为浮点数
g或者G自动在e和f或者E和F中切换%显示%

format这里我就举一些例子吧,具体的自己理解一下吧,可以看一下
https://www.runoob.com/python/att-string-format.html
示例代码:

print("{}*{}={}".format(1,2,2))
print("{:-.2f}".format(2))

结果:

1*2=2
2.00
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷雨飞鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值