python的基础知识梳理——字符串常用方法

目录

一、字符串的本质是:字符序列。

二、什么是字符串,字符串的创建

三、字符串的查询

(1)index()

(2)find()

四、字符串的转化

(1)upper()  把字符串全部转化为大写字母

 (2)lower()把字符串全部转化为小写字母

(3) swapcase()字符串原有大写转化为小写,原来小写转化为大写

 (4)capitalize()把第一个字符转化为大写,其余转化为小写

 (5)title() 把每个单词的第一个字符转化为大写,每个单词剩下的转化为小写。

 五、字符串内对齐的方法

(1)这是字符串格式的对齐的方式

(1)center()居中对齐,第一个参数表示指定宽度,第二个参数表示填充符号,如无则默认空格

(2) ljust()左对齐,第一个参数表示指定宽度,第二个参数表示填充符号,如无则默认空格

 (3)rjust()右对齐,第一个参数表示指定宽度,第二个参数表示填充符号,如无则默认空格

(4)zfill() 右对齐,左边用0填充,只接受一个参数,用于指定字符串长度

 六、字符串的劈分

(1)fplit() 从字符串的左边开始劈分

(2)rsplit()从右边劈分字符串

 七、判断字符串操作的方法

 八、字符串的替换

(1)repalce()字符串替换

 (2)join()字符串合并

 九、格式化字符串

十、字符串切片

十一、编码和解码

(1)编码

(2) 解码


一、字符串的本质是:字符序列。

Python的字符串是不可变的,我们无法对原字符串做任何修改。

但是我们可以将字符串的一部分复制到新创建的字符串,达到“看起来修改”的效果。

Python不支持单字符类型,单字符也是作为一个字符串使用的。


二、什么是字符串,字符串的创建

通过单引号或双引号创建字符串。

例如:a=’xiaoli’;  b=”250”

使用两种引号的好处是可以创建本身就包含引号的字符串,而不用使用转义字符。例如:

a = "I'm a student!"

 print(a)

I'm a student!

 b = 'my_name is "xiaoli"'

 print(b)

my_name is "xiaoli"

连续三个单引号或三个双引号,可以帮助我们创建多行字符串。例如:

>>> resume = ''' name="xiaoli"

company="sxt"   age=18

lover="小李"'''

>>> print(resume)

 name="xiaoli"

company="sxt"   age=18

lover="小李"

这些就是字符串


三、字符串的查询

index()查询字符串第一次出现的位置,若不存在,则返回ValueError
rindex()查询字符串最后一次出现的位置,若不存在,则返回ValueError
find()查询字符串第一次出现的位置,若不存在,则返回-1
rfind()查询字符串最后一次出现的位置,若不存在,则返回-1

这俩组方法异曲同工,但是最后返回的结果不一样

(1)index()

下面看题看实例:

#  index()

s='wo,shi,lao,liu,wo'

print(s.index("wo"))
print(s.rindex("wo"))

 这是可以查询到的,里面的字符串则是从0开始,往后排,(,)也算一个位置哦

下面我们看看不存在的

#  index()

s='wo,shi,lao,liu,wo'

print(s.index("wo"))
print(s.rindex("wp"))

 不存在返回的便是ValueError

(2)find()

而find和(rfind)也是同样的用法,我们这儿就直接上查询不到的

#  find()

s='wo,shi,lao,liu,wo'

print(s.find("wo"))
print(s.rfind("wp"))

 结果如如下,在第二个查询wp最后一次出现的位置时,字符串里是没有出现wp的,但没有报错,而是返回了-1



四、字符串的转化

upper()

把字符串全部转化为大写字母

lower()

把字符串全部转化为小写字母

swapcase()

字符串原有大写转化为小写,原来小写转化为大写

capitalize()

把第一个字符转化为大写,其余转化为小写

title()把每个单词的第一个字符转化为大写,每个单词剩下的转化为小写。

(1)upper()  把字符串全部转化为大写字母

用法:

s='wo,shi,lao,liu,wo'

print(s.upper())

 (2)lower()把字符串全部转化为小写字母

用法:

s=‘WO,SHI,LAO,LIU,WO

print(s.lower())

 

(3) swapcase()字符串原有大写转化为小写,原来小写转化为大写

s='wo,shi,LAO,LIU,wO'

print(s.swapcase())

 

 (4)capitalize()把第一个字符转化为大写,其余转化为小写

s='wo,shi,LAO,LIU,wO'

print(s.capitalize())

 

 (5)title() 把每个单词的第一个字符转化为大写,每个单词剩下的转化为小写。

s='wo,shi,LAO,LIU,wO'

print(s.title())

 

 五、字符串内对齐的方法

(1)这是字符串格式的对齐的方式

数字

格式

输出

描述

3.1415926

{:.2f}

3.14

保留小数点后两位

3.1415926

{:+.2f}

3.14

带符号保留小数点后两位

2.71828

{:.0f}

3

不带小数

5

{:0>2d}

05

数字补零 (填充左边, 宽度为2)

5

{:x<4d}

5xxx

数字补x (填充右边, 宽度为4)

10

{:x<4d}

10xx

数字补x (填充右边, 宽度为4)

1000000

{:,}

1,000,000

以逗号分隔的数字格式

0.25

{:.2%}

25.00%

百分比格式

1000000000

{:.2e}

1.00E+09

指数记法

13

{:10d}

        13

右对齐 (默认, 宽度为10)

13

{:<10d}

13

左对齐 (宽度为10)

13

{:^10d}

    13

中间对齐 (宽度为10)

 

(2)字符串函数对齐的方式

center()居中对齐,第一个参数表示指定宽度,第二个参数表示填充符号,如无则默认空格
ljust()

左对齐,第一个参数表示指定宽度,第二个参数表示填充符号,如无则默认空格

rjust()

右对齐,第一个参数表示指定宽度,第二个参数表示填充符号,如无则默认空格

zfill()

右对齐,左边用0填充,只接受一个参数,用于指定字符串长度

(1)center()居中对齐,第一个参数表示指定宽度,第二个参数表示填充符号,如无则默认空格

'居中对齐'
s1="2522000"

print(s1.center(11,'*'))

 

(2) ljust()左对齐,第一个参数表示指定宽度,第二个参数表示填充符号,如无则默认空格

'左对齐'
s1="2522000"

print(s1.ljust(11,'*'))

 (3)rjust()右对齐,第一个参数表示指定宽度,第二个参数表示填充符号,如无则默认空格

'右对齐'
s1="2522000"

print(s1.rjust(11,'*'))

(4)zfill() 右对齐,左边用0填充,只接受一个参数,用于指定字符串长度

'右对齐'
s1="2522111"

print(s1.zfill(11))

为了更加直观,我这儿将s1的字串串的000换为了111 

 

 六、字符串的劈分

(1)fplit() 从字符串的左边开始劈分

  • 默认的劈分符号是空格字符串,返回的是列表
  • 通过参数sep指定劈分字符串是劈分符
  • 通过第二个参数指定劈分的次数
s2="wo shi lao liu"
print(s2.split())

无指定,则以空格为劈分符号,返回列表 

 


 

s2="wo-shi-lao-liu"
print(s2.split(sep="-",maxsplit=2))

 指定劈分符号为:-   劈分次数是俩次

 

 我们看看不指定劈分次数是什么样子的

s2="wo-shi-lao-liu"
print(s2.split(sep="-"))

(2)rsplit()从右边劈分字符串

  •  默认的劈分符号是空格字符串,返回的是列表
  • 通过参数sep指定劈分字符串是劈分符
  • 通过第二个参数指定劈分的次数

大致和上面split()是一样的,就是劈分的时候是从右边开始的,只影响第三种,通过劈分次数劈分的字符串。

s2="wo-shi-lao-liu"

print(s2.raplit(sep="-",maxsplit=2))

 

 七、判断字符串操作的方法

isidentidier()判断字符串是否为合法标识(数字,下划线,字母组成)
isspace()判断字符串是否由空白字符组成(回车,换行,水平制表符)
isalpha()判断字符串是否全由字母组成
isdecimal()判断字符串是否为全由十进制组成
isnameric()判断字符串是否为全部为数字组成(大写,小写,罗马数字)
isalnum()判断字符串是否为全由数字,字母组成

现在演示一下其中一个,剩下的套进去就好

s1="20,54,874,45,15231,13"

print(s1.isalpha())

 

 八、字符串的替换

(1)repalce()字符串替换

第一个参数指定被替换的字串,第二个参数指定替换字串的字符中,最后返回替换后的字符串,替换前的字符串不发生变换,调用这种方法第三个参数,则为最大的替换次数。

s="hello,xiaoli"
print(s.replace("xiaoli","xiaohua"))
print(s)

 可以看到将xiaoli转化为了xiaohua,但是输出原来的s,是没有发生变化的

 


s="hello,xiaoli,xiaoli,xiaoli"
print(s.replace("xiaoli","xiaohua",2))

print(s)

 可以看到,前面的俩个xiaoli已经被转化成xiaohua,但是最后一个没有被转化

 (2)join()字符串合并

将列表和元组中的元素,合并成一个字符串

lst=["hello","python","xiaoli"]

print("--".join(lst))

 

 九、格式化字符串

有一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过 {} 和 : 来代替以前的 % 。

  • %s:代表字符串
  • %i或%d:表示整数
  • %f:表示浮点数

函数可以接受不限个参数,位置可以不按顺序。

我们通过示例进行格式化的学习。

 a = "名字是:{0},年龄是:{1}"

>>> a.format("小李",18)

'名字是:小李,年龄是:18'


>>> a.format("小花",6)

'名字是:小花,年龄是:6'


>>> b = "名字是:{0},年龄是{1}。{0}是个好小伙"

>>> b.format("小李",18)

'名字是:小李,年龄是18。小李是个好小伙'


>>> c = "名字是{name},年龄是{age}"

>>> c.format(age=19,name='小凯')

'名字是小凯,年龄是19'

我们可以通过{索引}/{参数名},直接映射参数值,实现对字符串的格式化,非常方便。

也可以输出的时候这样

print("%10d" % 99)

输出的结果是_ _ _ _ _ _ _ _ _ _ 99

print("%.3f" % 3.14159266)

输出的结果为:3.142

十、字符串切片

切片slice操作可以让我们快速的提取子字符串。标准格式为:

[起始偏移量start:终止偏移量end:步长step]

典型操作(三个量为正数的情况)如下:

操作和说明

示例

结果

[:]   提取整个字符串

“abcdef”[:]

“abcdef”

[start:]从start索引开始到结尾

“abcdef”[2:]

“cdef”

[:end]从头开始知道end-1

“abcdef”[:2]

“ab”

[start:end]从start到end-1

“abcdef”[2:4]

“cd”

[start:end:step]从start提取到end-1,步长是step

“abcdef”[1:5:2]

“bd”

其他操作(三个量为负数)的情况:

示例

说明

结果

"abtuvwxyz"[-3:]

倒数三个

“xyz”

"abpqrstuvwxyz"[-8:-3]

倒数第八个到倒数第三个(包头不包尾)

'stuvw'

"rstuvwxyz"[::-1]

步长为负,从右到左反向提取

'zyxwvutsr'

切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。

起始偏移量小于0则会当做0,终止偏移量大于“长度-1”会被当成-1。例如:

"abcdefg"[3:50]

'defg'

我们发现正常输出了结果,没有报错。

【操作】

  1. 将”to be or not to be”字符串倒序输出
  2. 将”sxtsxtsxtsxtsxt”字符串中所有的s输出

十一、编码和解码

(1)编码

Python直接支持Unicode,可以表示世界上任何书面语言的字符。

Python的字符默认就是16位Unicode编码,ASCII码是Unicode编码的子集。

使用内置函数ord()可以把字符转换成对应的Unicode码;

使用内置函数chr()可以把十进制数字转换成对应的字符。

 ord('A')

65

 ord('李')

26446

 chr(66)

'B'

 ord('奇')

22855

 

(2) 解码

s="小李喜欢打python"

byte = s.encode(encoding="GBK")          # 这是在编码   "GBK"是汉字编码标准之一,还有的是"UTF-8"

print(byte.decode(encoding='GBK'))      #解码

s="小李喜欢打python"

byte = s.encode(encoding="GBK")
print(byte)
print(byte.decode(encoding='GBK'))

 



原创不易,各位读者大大,请点赞,给作者加加动力!!!!

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

学python的小李

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

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

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

打赏作者

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

抵扣说明:

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

余额充值