《Python基础知识——数据类型之字符串》

本文详细介绍了Python中的字符串基础知识,包括字符串的创建(如使用单引号、双引号和三引号),转义字符的使用(如` `换行、` `制表符),以及字符串的处理方法,如增删改查。讨论了如何创建字符串、删除字符、修改字符串格式和查询字符串内容。此外,还涵盖了字符串格式化的多种方式,如f-string、占位符方法和format方法,提供实例演示了各种方法的使用。
摘要由CSDN通过智能技术生成

一,字符串简介(string)

字符,是程序语言当中最常见的数据类型之一。像一个字母,一个中文,或者一个非运算用途的数字都可以是一个字符。当多个字符组合以序列表示时,就形成一个字符串,像一组词,一句话都表示为字符串。另外,由于字符间是以序列的顺序进行排列的,因而每个字符都有其对应的位置,正序从0开始到结束,倒序从-1开始到结束,如下图所示:
在这里插入图片描述
那么在Python语言中,会用引号来定义一个字符串,且不同的引号有其特定功能,如下所述:
1.单引号
这是最常用的定义字符串的方式。

'Hello World' #'Hello World'

2.双引号
功能与用单引号时一样,但这时候可以在字符串里面添加单引号。

"Hell'o' World"  #"Hell'o' World"

3.三重引号
当使用三引号时,这时可以自由在字符串内换行。

'''Hello
World''' #'Hello\nWorld'

其实,在Python中,字符串被定义为str一类,于是我们可以利用str函数把任意对象转换为字符串了。

str(object=’’):将指定对象转换为字符串。
object:可选参数。指定要转换为字符串的对象,默认为空字符串。

str(1) #'1'
str() #''

二,转义字符

我们利用str函数或者引号可以很便捷地创建一个字符串,但在我们定义字符串的时候,有时候我们想在字符串中添加一些特殊的内容,如利用单引号定义字符串时在字符串中再添加单引号,或者想在字符串中添加缩进、换行时又该怎么做呢?这时候转义字符就发挥其作用了。
转义字符,是使用斜杠’'作为引导的在字符串中表示特殊内容的字符,下面是几种常见的转义字符。

\:续行符。字符串过长时可以在后面添加该转义字符,然后在下一行续写。
\a:蜂鸣,即输出字符时会发出响声。
\n:换行
\t:水平指标,即缩进
\\:反斜杠符号
\’:单引号
\":双引号

#续行符
'I love \
Python' #'I love Python'
#换行符
str1='I love\nPython'
str1 
#I love
#Python

转义字符是一种很常用的特殊字符,但有时候我们想让转义字符失效,即反斜杠失去其作为转义字符的功能时,只需要在字符串前添加字母‘R’或‘r’即可。

print(r'C:\Users\Administrator\Desktop') #C:\Users\Administrator\Desktop

四,字符串处理

字符串作为一种基础的数据类型,其中一个功能就是对信息的存储,因而其往往会赋值给一个变量从而保存在系统当中,那这时候就免不了对字符串的调用和处理。在字符串str的类当中,提供了不少方法对字符串进行处理,无非增删改查,下面列举一些常用的方法。

(一)增删改查

1.创建字符串

(1)将任意对象转换成字符串

参考上文str函数

(2)将字符可迭代对象转换成字符串

‘sep’.join(iterable):将字符可迭代对象转换成字符串,并返回结果。
sep:需要传入字符之间的分隔符。
iterable:需要传入一个元素都为字符的可迭代对象。

','.join(['Jack','Mike','Lily']) #'Jack,Mike,Lily'

2.删除字符

注:由于字符串属于不可变对象,因此并不存在真正意义上的删除和修改,只能是对返回的结果通过赋值的方式创建一个新的字符串

(1)移除字符串头尾\左侧\右侧指定字符

str.strip\lstrip\rstrip(chars=None):移除字符串头尾\左侧\右侧指定字符,并返回结果。
chars:可选参数。默认为空格。

'Hello World'.strip('Hd') #'ello Worl'
'  Hello World  '.strip() #'Hello World'
'Hello World'.lstrip('Hd') #'ello World'
'Hello World'.rstrip('Hd') #'Hello Worl'

3.修改字符串

(1)修改字符

str.replace(old,new,count=-1):修改字符串中指定的字符,并返回结果。
old:指定字符串中的旧字符。
new:新字符。
count:可选参数。指定要替换的个数,默认为-1,即全部。

'Hello World'.replace('o','p') #'Hellp Wprld'
'Hello World'.replace('o','p',1) #'Hellp World'
(2)修改格式
①修改大小写

str.upper\lower():返回字符串大写\小写格式。
str.capitalize():返回字符串首字母大写格式。
str.title():返回字符串每个字母首字母大写格式。

'Hello World'.upper() #'HELLO WORLD'
'Hello World'.lower() #'hello world'
'hello world'.capitalize() #'Hello world'
'hello world'.title() #'Hello World'
②左右对齐与居中

str.ljust\center\rjust(width,fiichar=’ ')
width:为字符串总长度,当长度小于字符串自身时返回自身
fillchar:可选参数。为填充的字符,默认为空格。

str.zfill(width):返回字符串自身。当width参数大于字符串字符数时,在字符串前面用0填充,可以看作用0填充的右对齐形式。

'hello world'.ljust(20,'*') #'hello world*********'
'hello world'.center(14,'*') #'*hello world**'
'hello world'.rjust(14) #'   hello world'
'hello'.zfill(10) #'00000hello'

4.查询字符串相关内容

(1)查询字符对应的Unicode码

chr(i):返回Unicode码对应的字符。
ord(char):返回单字符对应的Unicode码。

ord('我') #25105
chr(25105) #'我'
(2)查询字符的位置

str.find\rfind(sub[, start[, end]]):从左\右开始查询字符串的位置,并返回结果。
sub:需要查找的字符。
start:可选参数。指定开始位置。
end:可选参数。指定结束位置。

'hello world'.find('l') #2
'hello world'.find('l',3) #3
'hello world'.rfind('l') #9
(3)查询字符串是否以某个字符开头\结尾

str.startswith\endswith(prefix[, start[, end]]):查询字符串是否以某个字符开头\结尾,返回布尔值。
prefix:判断对象,可以是字符或字符串元组,如果是字符串元组,则满足其中一个都会返回True。
start:可选参数。指定开始位置。
end:可选参数。指定结束位置。

'hello world'.startswith('h') #True
'hello world'.startswith(('h','d','k')) #True
'hello world'.endswith('ld') #True
(4)查询字符串是否为指定类型

str.isupper\islower():判断字符串元素是否都为大\小写字母,返回布尔值。
str.isprintable():判断字符串元素是否都是可打印的,返回布尔值。
str.isnumeric():判断字符串元素是否都是数字的,返回布尔值。
str.isspace():判断字符串元素是否都是空格的,返回布尔值。

'HELLO'.isupper() #True
'hello'.islower() #True
'hello\nworld'.isprintable() #False
'520'.isnumeric() #True
'   '.isspace() #True
(5)查询字符出现的次数

str.count(sub[,start[,end]]):返回字符串中子串出现的次数。
sub:子字符串
start:可选参数。指定开始位置。
end:可选参数。指定结束位置。

'hello hello'.count('h') #2

(二)字符串格式化

在实际的编程过程中,我们经常需要把各种对象进行拼接进行输出。同类型对象之间如字符串,可以利用‘+’运算符进行拼接和’*‘进行复制输出。

'a'+'b' #'ab'
'a'*3 #'aaa'

但面对不同类型数据时,是无法进行拼接输出的。这时候字符串格式化就发挥其重要的作用,其用于把其他数据类型与字符串组合输出的情况,具体方法有以下几种:

1.f-string方法

在字符串前添加字母’f’,然后就可以利用大括号{}在字符串中填入其他对象了。

name,age='Jack',5
f'他叫{name},今年{age}岁了' #他叫Jack,今年5岁了

2.占位符方法

首先在字符串中用占位符说明对象的数据类型,然后就可以在字符串后用%指定对应对象了。当存在多个占位符时,要用元组的形式输出。
常见占位符如下:

占位符描述
%s字符型占位符
%f浮点数型占位符,可以用%.xf的形式保留x为小数
%d\o\x分别表示数据为十进制\八进制\十六进制
name,age='Jack',16
'他叫%s,今年%d岁了'%(name,age) #'他叫Jack,今年16岁了'
'他叫%s,今年%.2f岁了'%(name,age) #'他叫Jack,今年16.00岁了'
'他叫%s,今年%o岁了'%(name,age) #'他叫Jack,今年20岁了'
'他叫%s,今年%x岁了'%(name,age) #'他叫Jack,今年10岁了'

3.format方法

(1)使用方法

使用format方法首先要在字符串当中用大括号{}定义数据类型,再在后面用format方法指定数据,为了方便解释,下面通过举例的方式进行说明。

①按照对应的顺序,不指定位置
name,age='Jack',16
'他叫{},今年{}岁了'.format(name,age) #他叫Jack,今年16岁了
#这里name变量和age变量分别对应第一和第二个大括号
②设置指定位置,且可多次使用
name,age='Jack',16
'他叫{0},今年{1}岁了,他的同桌今年也{1}岁了。'.format(name,age) #他叫Jack,今年16岁了,他的同桌今年也16岁了。
#大括号中设置了位置0和1,其中,name变量为第0个位置,age变量为第1个位置.
③使用序列格式化
Jack=['Jack',16]
'他叫{0[0]},今年{0[1]}岁了。'.format(Jack) #他叫Jack,今年16岁了。
#大括号中设置了位置0,即列表Jack,而后第一个大括号选取了列表Jack第0个元素'Jack',第二个大括号选取了第1个元素16。
#~也可以这么用~
'他叫{0},今年{1}岁了。'.format(*Jack) #他叫Jack,今年16岁了。#他叫Jack,今年16岁了。
#在参数Jack前面加个*号表示把变量Jack作为元组形式传入参数当中,这时候的使用方法与指定位置方法一样
④使用字典格式化
Jack={'name':'Jack','age':16}
'他叫{name},今年{age}岁了。'.format(**Jack) #他叫Jack,今年16岁了。
#在参数Jack前面加个**号表示把变量Jack作为字典形式传入参数当中,这时候可以直接用字典的键作为指定位置。
(2)格式设置

format方法还支持内部格式的设置,如对齐,宽度,类型等都可以在大括号内进行设置,书写顺序按以下表格依次书写。

内容描述
:引导符号(引导格式设置)
填充当宽度小于字符长度时用于填充的单个字符
对齐<:左对齐 >:右对齐 ^:居中
宽度设置输出宽度,当字符串长度大于宽度时返回自身
逗号用于数字的千位分隔符,适用与整数和浮点数
精度以.x格式书写,浮点数保留小数部分x位数,字符串则是设置字符串最长输出长度x
类型整数类型:b,d,o,x\X分别表示二进制,十进制,八进制和十六进制整数;浮点数类型:e\E,f,%分别表示科学计数,普通浮点数,百分号表示小数。
'{:*^20,.3f}'.format(31415.92653) #*****31,415.927*****
print('{:*^20.3}'.format('我爱编程')) #********我爱编*********
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值