字符串(3)

目录

1. 字符串编码转换

1.1 使用encode()方法编码

1.2 使用decode()方法解码

2. 字符串拼接

3. 字符串长度

4. 截取字符串

5. 分割字符串

6. 合并字符串

7. 检索字符串

7.1 count

7.2 find

7.3 index

7.4 startswith和endswith

8. 字母大小写转换

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

10. 格式化字符串

10.1 使用%操作符

10.2 format()方法

在python中,有两种常用的字符串类型,分别为str和byte。这两种类型的字符串不能拼接在一起。

byte类型的数据是带有b前缀的字符串,例如,b'\xd2\xb0'。

1. 字符串编码转换

1.1 使用encode()方法编码

encode()方法为str对象的方法,用于将字符串转换为二进制数据(byte),也称为“编码”。

str = '爬虫入门'
byte1 = str.encode('GBK') #将GBK编码转换为二进制数据
byte2 = str.encode('utf-8') #将utf-8编码转换为二进制数据
print('原字符串:',str)
print('转换后:',byte1)
print('转换后:',byte2)

运行结果如下:

原字符串: 爬虫入门
转换后: b'\xc5\xc0\xb3\xe6\xc8\xeb\xc3\xc5'
转换后: b'\xe7\x88\xac\xe8\x99\xab\xe5\x85\xa5\xe9\x97\xa8'

1.2 使用decode()方法解码

decode()方法为bytes对象的方法,用于将二进制数据转换为字符串。

str = '爬虫入门'
byte1 = str.encode('GBK') #将GBK编码转换为二进制数据
byte2 = str.encode('utf-8') #将utf-8编码转换为二进制数据

str1 = byte1.decode('GBK') #解码
str2 = byte2.decode('utf-8') #解码
print('原字符串:',str)
print('转换后:',byte1)
print('转换后:',byte2)
print('解码后:',str1)
print('解码后:',str2)

运行结果如下:

原字符串: 爬虫入门
转换后: b'\xc5\xc0\xb3\xe6\xc8\xeb\xc3\xc5'
转换后: b'\xe7\x88\xac\xe8\x99\xab\xe5\x85\xa5\xe9\x97\xa8'
解码后: 爬虫入门
解码后: 爬虫入门

2. 字符串拼接

str1 ='大学毕业后我就'
num =22
str3 ='岁'
str4 ='了'

print(str1+str(num)+str3+str4) #字符串不允许与其他类型的数据直接拼接,需要使用str()转换

运行结果如下:

大学毕业后我就22岁了

3. 字符串长度

使用len()函数计算字符串长度。

str1 ='大学毕业后'
print(len(str1))

运行结果如下:

5

4. 截取字符串

str1 ='大学毕业后我就22岁了'
substr1 =str1[1] #截取第二个字符
substr2 =str1[5:] #从第6个字符截取
substr3 =str1[:4] #截取前4个字符
substr4 =str1[1:5]
print(substr1+'\n'+substr2+'\n'+substr3+'\n'+substr4)

运行结果如下:

学
我就22岁了
大学毕业
学毕业后

5. 分割字符串

把一个字符串按照指定的分隔符切分为字符串列表。

str.split(sep,maxsplit)
#str:要分割的字符串
#sep:分隔符
#maxsplit:分割次数

例如:

str = '大 学 毕 业 后,我,拿到了,***的offer/真的很高兴/哈哈'
list1 = str.split() #默认采用空白符分割
list2 = str.split(',',2) #采用','分割2次 #字符串中的“,”为中文符号,分隔符为英文“,”,因此输出结果不会变化,如果执意分割,将此处更改为str1 = '大 学 毕 业 后,我,拿到了,***的offer/真的很高兴/哈哈'#,为英文输入符号的逗号

list3 = str.split('/',1) #采用'/'分割1次
print(list1)
print(list2)
print(list3)

运行结果如下:

['大', '学', '毕', '业', '后,我,拿到了,***的offer/真的很高兴/哈哈']
['大 学 毕 业 后,我,拿到了,***的offer/真的很高兴/哈哈']
['大 学 毕 业 后,我,拿到了,***的offer', '真的很高兴/哈哈']

6. 合并字符串

合并字符串不同于拼接字符串,它会将多个字符串采用固定的分割符连接在一起。

语法格式如下:

strnew = str.join(iterable)
#strnew:新字符串
#str:指定合并时的分隔符
#iterable:可迭代对象,该迭代对象中的所有元素将被合并为一个新的字符串

例如:

list = ['小明','小红','小王']
str1 = '@'.join(list)
str2 = '@'+str1
print(str1)
print(str2)

运行结果如下:

小明@小红@小王
@小明@小红@小王

7. 检索字符串

7.1 count

conut()方法用于检索指定字符串在另一个字符串中出现的次数。

str1 = '@小明@小红@小王'
str2 = 'b\0dx\abcd\d'
num1 = str1.count('@')
num2 = str2.count('d')
print(num1)
print(num2)

运行结果如下:

3
3

7.2 find

find()方法用于检索是否包含指定字符串。如果检索的字符串不存在,则返回-1;否则返回首次出现该字符串时的索引。

str1 = '@小明@小红@小王'
str2 = 'b\0dx\abcd\d'
num1 = str1.find('@')
num2 = str2.find('d')
print(num1)
print(num2)

运行结果如下:

0
2

7.3 index

index()方法与find()方法类似,用于检索是否包含指定字符串。

str1 = '@小明@小红@小王'
str2 = 'b\0dx\abcd\d'
num1 = str1.index('小')
num2 = str2.index('b')
print(num1)
print(num2)

运行结果如下:

1
0

7.4 startswith和endswith

startswith()方法和endswith()方法用于检索字符串是否以指定字符串开头和结尾。如果是返回Ture,否则返回False。

str2 = 'b\0dx\abcd\d'
print(str2.startswith('b'))
print(str2.startswith('x'))
print(str2.endswith('d'))
print(str2.endswith('x'))

运行结果如下:

True
False
True
False

8. 字母大小写转换

str = 'WWW.baidu.com'
print('全部转换为小写:',str.lower())
print('全部转换为大写:',str.upper())

运行结果如下:

全部转换为小写: www.baidu.com
全部转换为大写: WWW.BAIDU.COM

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

特殊字符是指制表符\t、按Enter键符\r、换行符\n等。

str1 = '\t\n\r WWW.baidu.com  \t\n\r'
str2 = '  \t\n\r WWW.baidu.com'
str3 = 'WWW.baidu.com  \t\n\r '
str7 = '@.小明@小红@小王.'

str4 = str1.strip() #去掉字符串左右两侧的空格和特殊字符
str5 = str2.lstrip() #去掉字符串左侧的空格和特殊字符
str6 = str3.rstrip() #去掉字符串右侧的空格和特殊字符
str8 = str7.strip('@.') #去掉字符串左右两侧的空格和特殊字符
print(str4)
print(str5)
print(str6)
print(str8)

运行结果如下:

WWW.baidu.com
WWW.baidu.com
WWW.baidu.com
小明@小红@小王

10. 格式化字符串

10.1 使用%操作符

在python中,可以使用%操作符实现格式化字符串,语法格式如下:

'%[-][+][0][m][.n]格式字符'%exp
#-:可选参数,用于指定左对齐,正数前面无符号,负数前面加负号。
#+:可选参数,用于指定右对齐,正数前面加正号,负数前面加负号。
#0:可选参数,用于指定右对齐,正数前面无符号,负数前面加负号,用0填充空白处。
#m:可选参数,表示占有宽度。
#.n:可选参数,表示小数点后保留的位数。
#格式字符:指定类型。
#exp:要转换的项。如果转换的项有多个,需要通过元组的形式进行指定,不能使用列表。
常用的格式字符及说明
格式字符说明
%s字符串(采用str()显示)
%c单个字符
%d或者%i十进制整数
%x十六进制整数
%f或者%F浮点数
%r字符串(采用repr()显示)
%o八进制整数
%e指数(基底为e)
%E指数(基底为E)
%%字符%

例如:

template= '编号:%09d\t公司名称:  %s\t官网:  http://www.%s.com' #模板
context1 = (7,'百度','baidu') #要转换的内容
context2 = (1117,'百度','baidu') #要转换的内容
print(template%context1)
print(template%context2)

运行结果如下:

编号:000000007	公司名称:  百度	官网:  http://www.baidu.com
编号:000001117	公司名称:  百度	官网:  http://www.baidu.com

10.2 format()方法

字符串对象提供了format()方法对字符串进行格式化。

语法格式如下:

str.format(args)
#str:指定字符串的显示样式(模板)。
#args:指定转换的项。

模板创建:

{[index][:[[fill]align][sign][#][width][.precision][type]]}
#index:可选参数,用于指定要设置格式的对象在参数列表中的索引位置,索引值从0开始。
#fill:可选参数,指定空白处填充的字符。
#align:可选参数,用于指定对齐方式("<"表示内容左对齐;">"表示内容包括符号)右对齐;"="只对数值类型有效,表示内容右对齐,
# 如果是负数,则将负数放在填充内容的最左侧,如果是正数,不添加负号;"^"表示内容居中)。
#sign:可选参数,用于指定有无符号数(+表示整数加正号,负数加负号;-表示正数不变,负数加负号;值为空格表示正数加空格,负数加负号)。
##:可选参数,对于二进制、八进制、十六进制,如果加上#,表示会显示0b/0o/0x前缀,否则不显示前缀。
#width:可选参数,用于指定所占宽度。
#.precision:可选参数,用于指定保留的小数位数。
#type:可选参数,用于指定类型。如下表所示:
常用格式字符及说明
格式字符说明
S对字符串类型格式化
D十进制整数
C将十进制整数自动转换成对应的Unicode字符
e或E转换为科学计数法表示再格式化
g或G自动在e和f,或者E和F中切换
b将十进制整数自动转换成二进制表示再格式化
o将十进制整数自动转换成八进制表示再格式化
x或X将十进制整数自动转换成十六进制表示再格式化
f或F转换为浮点数(默认小数点后保留六位)再格式化
%显示百分比(默认显示小数点后六位)

例如:

template = '编号: {:0>9s}\t公司名称: {:s}\t官网: http://www.{:s}.com' #模板
context1 = template.format('127','百度','baidu')
print(context1)

运行结果如下:

编号: 000000127	公司名称: 百度	官网: http://www.baidu.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值