快速学习Python基础知识4--容器1--字符串

来源引用网络知识与某站曹老师视频相互结合学习记录,仅供参考!

Python 基础知识

四、容器

容器是一种可以存储多个元素的数据类型;

Python 中的容器有:字符串 str列表 list元组 tuple集合 set字典 dict;

统计"长度或数量"一般使用 len() 函数,每个容器都有。

1、 字符串

字符串是多个字符的集合,与元组同样,是无法修改字符串内容的;它也是常量;

使用引号(单引号、双引号、三引号);

字符串的定义

字符串变量="内容"

字符串变量=''

字符串变量=str()

复制代码
# 赋值定义一个字符串
str1 = 'hello word'
print(f'字符串str1 ={str1},类型是:{type(str1)} ')

# 定义一个空字符串
str2 = ''
print(f'字符串str2 ={str2},类型是:{type(str2)} ')
# 使用面向对象的方式定义一个空字符串
str3 = str()
print(f'字符串str3 ={str3},类型是:{type(str3)} ')


运行结果
字符串str1 =hello word,类型是:<class 'str'> 
字符串str2 =,类型是:<class 'str'> 
字符串str3 =,类型是:<class 'str'> 
字符串的下标索引

字符串的下标索引的用法几乎和列表、元组的下标索引用法一样;可以通过字符串的下标索引获取字符串中的元素;

下标索引从 0 开始,第一个元素下标索引是 0,第二个元素下标索引是 1,......第 N 个元素下标索引是 N-1;

或者通过反向索引也可以获取字符串元素;索引从-1 开始,倒数第二个元素下标索引是-2,......倒数第 N 个元素的下标索引是 -N;

|---------|----|--------|--------|--------|--------|--------|--------|-----|-----|
| 字符串 str | 1 | 2 | 3 | 4 | 5 | 6 | ...... | N-1 | N |
| 正索引 | 0 | 1 | 2 | 3 | 4 | 5 | ...... | N-2 | N-1 |
| 负索引 | -N | -(N-1) | -(N-2) | -(N-3) | -(N-4) | -(N-5) | ...... | -2 | -1 |
| | | -N+1 | -N+2 | -N+3 | -N+4 | -N+5 | ...... | | |

注意点:字符串的下标不能越界,否则就会越界错误;

字符串的常用方法

虽然字符串不能被修改,但是可以通过很多常用的操作方法来返回一个操作过的新字符串;

1、index(元素)方法,查找字符串中指定元素的下标,不存在就报错;

复制代码
# 赋值定义一个字符串
str1 = 'hello word'
print(f'字符串str1 ={str1},类型是:{type(str1)} ')

str_index = str1.index('wo')
print(str_index)


运行结果
字符串str1 =hello word,类型是:<class 'str'> 
6

2、replace(old字符串1, new字符串2),把字符串内的所有字符串1,替换成字符串2,然后方法返回一个新字符串;

复制代码
str1 = 'hello word'
str2 = str1.replace('word', 'hello')
print(f'str1是保持不变的:{str1}')
print(f'str2是会被替换的:{str2}')


运行结果
str1是保持不变的:hello word
str2是会被替换的:hello hello

若不想全部替换,只替换前几个可以使用 replace(old字符串1,new字符串2,count)方法;

复制代码
# 赋值定义一个字符串
str1 = 'hello word'
# 部分替换,从前到后开始替换
str2 = str1.replace('o', 'x', 1)
print(f'str1是保持不变的:{str1}')
print(f'str2是会被替换的:{str2}')


运行结果
str1是保持不变的:hello word
str2是会被替换的:hellx word

3、split(分隔符字符串),根据指定的分隔符字符串,将字符串分割成多个字符串,并存入列表对象中,方法返回列表对象;

复制代码
# 赋值定义一个字符串
str1 = 'hello word'
str2 = 'Android,iOS,鸿蒙'
# 通过split分割(使用空格分割),返回的是一个列表
l1 = str1.split(' ')
# 例如:开发常见的,使用逗号隔开的,注意区分中英文状态
l2 = str2.split(',')

print(f'str1本身是保持不变的,不会被修改的:{str1}')
print(f'l1={l1},l1的类型type={type(l1)}')
print(f'l2={l2},l2的类型type={type(l2)}')


运行结果
str1本身是保持不变的,不会被修改的:hello word
l1=['hello', 'word'],l1的类型type=<class 'list'>
l2=['Android', 'iOS', '鸿蒙'],l2的类型type=<class 'list'>

4、strip(),去掉前后空格,返回新的字符串;

复制代码
# 赋值定义一个前后都有空格的字符串
str1 = '  hello word  '
print(f'str1本身是保持不变的={str1}')
ele = str1.strip()
# print('去除前后空格后的=', str1.strip())
print(f'str1去除前后空格后的={ele}')


运行结果
str1本身是保持不变的=  hello word  
str1去除前后空格后的=hello word

strip(字符串),如果带字符串的话,还可以去掉前后指定的字符串,返回新的字符串;

复制代码
# 赋值定义一个前后都有"特殊字符(指定字符串)"的字符串
str1 = '¥%hello word¥%$'
print(f'str1本身是保持不变的={str1}')
# 去掉字符串前面和后面的指定字符
ele = str1.strip('¥$%')
# print('去除前后位置指定字符后=', str1.strip('¥$%'))
print(f'去除前后位置指定字符后={ele}')


运行结果
str1本身是保持不变的=¥%hello word¥%$
去除前后位置指定字符后=hello word

5、count(字符串),统计字符串中出现指定字符串的个数;

复制代码
# 赋值定义字符串
str1 = 'hello word'

# count(元素)统计某元素在字符串中的个数
count = str1.count('l')
print(f'str1列表中元素"l"的个数={count}')


运行结果
str1列表中元素"l"的个数=2

6、len(字符串),统计字符串的长度;

复制代码
# 赋值定义字符串
str1 = 'hello word'

# len(字符串),统计字符串内一共有多少元素
# length = len(str1)
# print(f'统计str1列表中的元素个数:{length}')
print(f'统计str1字符串中的元素个数:', len(str1))


运行结果
统计str1字符串中的元素个数: 10
Python 的字符串内建函数

Python 的字符串常用内建函数如下:

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------|
| 方法 | 描述 |
| capitalize() | 将字符串的第一个字符转换为大写。 |
| center(width, fillchar) | 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
| count(str, beg= 0,end=len(string)) | 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数。 |
| bytes.decode(encoding="utf-8", errors="strict") | Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
| encode(encoding='UTF-8',errors='strict') | 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'。 |
| endswith(suffix, beg=0, end=len(string)) | 检查字符串是否以 suffix 结束,如果 beg 或者 end 指定则检查指定的范围内是否以 suffix 结束,如果是,返回 True,否则返回 False。 |
| expandtabs(tabsize=8) | 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 |
| find(str, beg=0, end=len(string)) | 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1。 |
| index(str, beg=0, end=len(string)) | 跟find()方法一样,只不过如果str不在字符串中会报一个异常。 |
| isalnum() | 检查字符串是否由字母和数字组成,即字符串中的所有字符都是字母或数字。如果字符串至少有一个字符,并且所有字符都是字母或数字,则返回 True;否则返回 False。 |
| isalpha() | 如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False。 |
| isdigit() | 如果字符串只包含数字则返回 True 否则返回 False。 |
| islower() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False。 |
| isnumeric() | 如果字符串中只包含数字字符,则返回 True,否则返回 False。 |
| isspace() | 如果字符串中只包含空白,则返回 True,否则返回 False。 |
| istitle() | 如果字符串是标题化的(见 title())则返回 True,否则返回 False。 |
| isupper() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False。 |
| join(seq) | 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串。 |
| len(string) | 返回字符串长度。 |
| ljust(width, fillchar) | 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
| lower() | 转换字符串中所有大写字符为小写。 |
| lstrip() | 截掉字符串左边的空格或指定字符。 |
| maketrans() | 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
| max(str) | 返回字符串 str 中最大的字母。 |
| min(str) | 返回字符串 str 中最小的字母。 |
| replace(old, new , max) | 把将字符串中的old替换成new,如果max指定,则替换不超过 max次。 |
| rfind(str, beg=0,end=len(string)) | 类似于 find()函数,不过是从右边开始查找。 |
| rindex( str, beg=0, end=len(string)) | 类似于 index(),不过是从右边开始。 |
| rjust(width,, fillchar) | 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
| rstrip() | 删除字符串末尾的空格或指定字符。 |
| split(str="", num=string.count(str)) | 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串。 |
| splitlines(keepends) | 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
| startswith(substr, beg=0,end=len(string)) | 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
| strip(chars) | 在字符串上执行 lstrip()和 rstrip()。 |
| swapcase() | 将字符串中大写转换为小写,小写转换为大写。 |
| title() | 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写。 |
| translate(table, deletechars="") | 根据 table 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中。 |
| upper() | 转换字符串中的小写字母为大写。 |
| zfill (width) | 返回长度为 width 的字符串,原字符串右对齐,前面填充0。 |
| isdecimal() | 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |

字符串的遍历

while 循环遍历 字符串:

复制代码
# 赋值定义字符串
str1 = 'hello word'

# 定义变量i=0
i = 0

# while循环 条件i
while i < len(str1):
    # 通过下标取值元素,并赋值给ele
    ele =str1[i]
    # 每次循环进行打印
    print(ele, end= ' ')
    # 防止while陷入死循环
    i += 1


运行结果
h e l l o   w o r d 

for 循环遍历 字符串:

复制代码
# 赋值定义字符串
str1 = 'hello word'

# 每次遍历str1字符串时把获取到的每个变量放在 临时变量i 里面
for i in str1:
    # 默认是 end='\n'
    print(i, end=' ')


运行结果
h e l l o   w o r d 

未完待续......