字符串类型

时间:2024-03-22 10:39:12

目录

 

字符串类型

1.字符串介绍

2.下标和切片

a.字符串下标

b.字符串的切片

3.字符串常见操作

<1> find和rfind

<2> index和rindex

<3>count

<4>replace

<5>upper和lower

<6>split

<7>capitalize

<8> title

<9>startswith和endswith

<10>ljust/rjust/center

<11>lstrip/rstrip/strip

<12>partition和rpartition

<13>splitlines

<14>isalpha/isdigit/isalnum/isspace

<15>join


 

字符串类型

1.字符串介绍

  1. 字符串或串(String)是由数字/字母/下划线组成的一串字符。
  2. 字符串是由成对的单引号(‘)或成对的双引号(“)或三个单(双)引号括起来的字符内容。

 

一般记为:

var_str = “a1a2a3...an”(n>=0)

 

2.下标和切片

a.字符串下标

字符串里面的每个字母都是有索引的,字符串实际上就是字符的数组,所以也支持下标索引。

索引顺序有两种:

正序:从左到右索引默认0开始,最大范围是字符串长度-1

反序:从右到作索引默认-1开始,最大范围是字符串开头

如下:

 

H

E

L

L

O

正序

0

1

2

3

4

反序

-5

-4

-3

-2

-1

 

正序:

字符串类型

输出结果:

字符串类型

 

反序,反之。

 

注意:

字符串的运算:

+:属于字符串的拼接,将+号前后两个字符串拼接成一个新的字符串

*:字符串重复输出两次

 

in/ not in判断字符串或字符是否在数据中返回True/False

字符串类型

输出结果:

 

 

b.字符串的切片

何为切片?

切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。

切片格式: [start : end : step]  

注意:

选取区间属于左闭右开型,即从start位开始,到end位的前一位结束(不包含end位本身),step步长每次跳过多少位取值

start不写默认从0开始,end不写默认字符串长度(len(当前字符串))

  1. [:] 提取开头(默认位置0)到结尾(默认位置-1)的整个字符串
  2. [start:] 从start开始到结尾
  3. [:end]  从0开始到end-1结尾
  4. [start:end] 从start开始到end-1结尾

字符串类型

输出结果:

字符串类型

 

3.字符串常见操作

以字符串var_str = “hello world! My name is Zhang XiaoMing.”为例

<1> find和rfind

检测字符串中是否包含指定的字符串,如果包含返回开始索引值;否则,返回-1。

var_str.find(var_find_str, start, end)

默认start为0,end为var_str的长度

 

注意:  find属于从左端开始查找,而rfind属于从右端开始查找。

 

问题:

查找字符串var_str中是否包含name字符串?

分析:

以前我们可以使用in/not in,我们试试看可以不!

A.先创建变量var_str并赋值,创建查找变量var_find_str并赋值

B.使用in/not in判断,var_find_str是否在var_str中,返回结果True/False

C.打印返回结果

    字符串类型

输出结果:

字符串类型

证明此方案可行。有没有更方便的方案呢?

 

使用find()方法来查找,特点是可以查找指定范围

案例:

字符串类型

输出结果:

字符串类型

 

特定范围搜索:

案例:

字符串类型

输出结果:

字符串类型

 

<2> index和rindex

var_str.index(var_find_str, start, end)

跟find()方法一样,只不过如果var_find_str不在 var_str中会报一个异常:

 

注意: index()与find()方法一样都是从左端开始;rindex()与rfind()方法一样从右段开始。

 

案例:

字符串类型

输出结果:

字符串类型

结论:

16是我们[5,20)搜索结果,当搜索范围[5,18)时不在此范围了,出现了ValueError错误,此错误说明var_find_str没有被发现。 又多一个错误(NameError)

 

 

<3>count

var_str.count(var_find_str, start, end)

返回var_find_str在start和end之间出现的次数。

案例:

字符串类型

返回结果:

字符串类型

 

<4>replace

var_str.replace(

var_old_str, 旧字符

var_new_str, 新字符

var_str.count(var_old_str)    旧字符出现次数,也是新字符替换次数

)

 

把var_str中的var_old_str替换成var_new_str,如果count指定,则替换不超过count次数。

 

案例:

字符串类型

输出结果:

字符串类型

 

<5>upper和lower

字符串的大小写切换。

Upper()方法,将所有字符都转换成大写。

Lower()方法,将所有字符都转换成小写。

案例:

字符串类型

输出结果:

字符串类型

 

<6>split

var_str.split(

str, str为分隔符切片

num 分割的数量为num + 1

)

以str为分隔符切片var_str,如果num有值,则仅分割num+1个子字符串。

 

案例:

字符串类型

输出结果:

字符串类型

 

<7>capitalize

  var_str.capitalize()

把字符串的第一个字符大写。

案例:

字符串类型

输出结果:

字符串类型

 

<8> title

var_str.title()

把字符串的每个单词首字母大写。

案例:

字符串类型

输出结果:

字符串类型

 

<9>startswith和endswith

var_str.startswith(obj)

检测字符串是否以obj开头,是返回True,否返回False。

var_str.endswith(obj)

检测字符串是否以obj结尾,是返回True,否返回False。

 

案例:

字符串类型

输出结果:

字符串类型

 

 

<10>ljust/rjust/center

var_str.ljust(width) width:字符串长度

返回一个原字符串左对齐,并使用空格填充至长度widthd的新字符串。

var_str.rjust(width) width:字符串长度

返回一个原字符串右对齐,并使用空格填充至长度widthd的新字符串。

var_str.center(width) width:字符串长度

返回一个原字符串居中对齐,并使用空格填充至长度widthd的新字符串。

 

案例:

字符串类型

输出结果:

字符串类型

 

 

<11>lstrip/rstrip/strip

var_str.lstrip()

删除字符串左端空白字符

var_str.rstrip()

删除字符串右端空白字符

var_str.strip()

删除字符串两端空白字符

案例:

字符串类型

输出结果:

字符串类型

 

<12>partition和rpartition

var_str.partition(str)

把从左端开始var_str分为三部分:str前,str,str后;

var_str.rpartition(str)

把从右端开始var_str分为三部分:str前,str,str后;

 

案例:

字符串类型

输出结果:

字符串类型

 

<13>splitlines

var_str.splitlines()

按照行分隔,返回一个包含各行作为元素的列表

案例:

字符串类型

输出结果:

字符串类型

 

<14>isalpha/isdigit/isalnum/isspace

var_str.isalpha()

判断字符串中所有字符是否都是字母,是返回True,否返回False

var_str.isdigit()

判断字符串中所有字符是否都是数字,是返回True,否返回False

var_str.isalnum()

判断字符串是否由字母和数字构成,是返回True,否返回False

var_str.isspace()

判断字符串是否只包含空格,是返回True,否返回False

 

案例:

字符串类型

输出结果:

字符串类型

 

<15>join

var_str.join(sep)

以 var_str作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串。

案例:

字符串类型

输出结果:

字符串类型