字符串(str)

目录

一、基本介绍

1、在Python中处理文本数据是使用str对象,也称为字符串。字符串是由Unicode码位构成的不可变序列

2、字符串字面值有三种写法

3、字符串是字符的容器,一个字符串可以存放多个字符

二、字符串支持索引

1、使用语法

2、举例说明

3、代码演示

三、字符串的遍历

1、什么是字符串的遍历

2、实例:使用while和for循环,对字符串进行遍历输出

四、注意事项和使用细节

五、字符串常用操作

1、字符串常用操作

2、演示字符串常用操作

六、字符串的比较

1、字符串比较

2、字符编码-简单示意图

3、字符串的比较-实例

七、练习


参考文档:内置类型 — Python 3.12.4 文档

一、基本介绍

1、在Python中处理文本数据是使用str对象,也称为字符串。字符串是由Unicode码位构成的不可变序列

1)Unicode码是一种字符编码

2)Unicode编码能够表示的数量为65536个字符

3)Unicode是国际组织指定的可以容纳世界上所有文字和符号的字符编码方案

4)参考:ord()返回单个字符对应的Unicode编码值

2、字符串字面值有三种写法

1)单引号:' 允许包含有"双"引号'

2)双引号:"允许嵌入'单'引号"

3)三重引号:'''三重单引号''',"""三重双引号""",使用三重引号的字符串可以跨越多行——其中所有的空白字符都将包含在该字符串字面值中

3、字符串是字符的容器,一个字符串可以存放多个字符

比如"hi-韩顺平教育",示意图

二、字符串支持索引

1、使用语法

字符串名[索引]

2、举例说明

str_a="red-green"

比如:要取出strr_a字符串的第3个值/元素"d",则通过str_a[2]就可以访问到

提示:索引是从0开始计算的,取出的单个字符,类型仍然是字符串

3、代码演示

str_a = "red-green"
print("str_a的第三个字符是:", str_a[2], "类型是:", type(str_a[2]))  # d str

三、字符串的遍历

1、什么是字符串的遍历

简单的说,就是将字符串的每个元素依次取出,进行处理的操作,就是遍历/迭代

str_b="hi-韩顺平教育"

2、实例:使用while和for循环,对字符串进行遍历输出

# 使用 while和 for 遍历字符串
str_b="hi-韩顺平教育"
# while 循环遍历
index = 0
while index<len(str_b):
    print(f"第 {index+1} 个元素是:{str_b[index]}")
    index+=1

# print("=====================")
# 上面的分隔符可以这样写
print("="*30)

# for 循环遍历
for ele in str_b:
    print(ele)

四、注意事项和使用细节

1、字符串索引必须在指定范围内使用,否则报IndexError: string index out of range,比如str_d="hi-韩顺平教育" ,有效下标为0-7。索引也可以从尾部开始,最后一个元素的索引为-1,往前一位为-2,以此类推

2、字符串是不可变序列,不能修改,看下面代码

str="hi-韩顺平教育"
# 通过索引可以访问指定元素
print(str[3])
# 不能修改元素
# str[3]="李"

3、在Python中,字符串长度没有固定的限制,取决于计算机内存大小

五、字符串常用操作

1、字符串常用操作

1)文档:内置类型 — Python 3.12.4 文档

2)常用操作一览

2、演示字符串常用操作

1)len(str):字符串的长度,也就是包含多少个字符

# len(str):字符串的长度,也就是包含多少个字符
str_names="jack tom mary hsp nono tom"
print(f"{str_names} 有 {len(str_names)} 个字符")  # 26

2)str.replace(old,new,[count]):返回字符串的副本,其中出现的所有子字符串old都将被替换成new,如果给出了可选参数count,则只替换前count次出现

# str.replace(old,new,[count]):返回字符串的副本,其中出现的所有子字符串old都将被替换成new,
# 如果给出了可选参数count,则只替换前count次出现
# 返回字符串的副本,表示原来的字符串不变,而是返回一个新的字符串

# 需求:将"jack"替换成,只替换一个
str_names_new=str_names.replace("jack","杰克",1)
print("str_names_new:",str_names_new)  # 杰克 tom mary hsp nono tom
print("str_names:",str_names)  # jack tom mary hsp nono tom

3)str.split(sep=None,maxsplit=-1):返回一个由字符串内单词组成的列表,使用sep作为分隔字符串。如果给出了maxsplit,则最多进行maxsplit次拆分(因此,列表最多会有maxsplit+1个元素)。如果maxsplit未指定或为-1,则不限制拆分次数(进行所有可能的拆分)

# str.split(sep=None,maxsplit=-1):返回一个由字符串内单词组成的列表,使用sep作为分隔字符串。
# 如果给出了maxsplit,则最多进行maxsplit次拆分(因此,列表最多会有maxsplit+1个元素)。
# 如果maxsplit未指定或为-1,则不限制拆分次数(进行所有可能的拆分)

# 需求:对ste_names按照" "进行分割
str_names_split=str_names.split(" ")
print(f"str_names_split 内容是 {str_names_split} 类型是 {type(str_names_split)}")
# ['jack', 'tom', 'mary', 'hsp', 'nono', 'tom']  类型是 <class 'list'>
print(f"str_names 内容是 {str_names}")  # jack tom mary hsp nono tom

4)str.count(sub):统计指定子字符串在字符串中出现的次数

# str.count(sub):统计指定子字符串在字符串中出现的次数
# 统计tom在字符串出现了几次
print("tom在字符串出现的次数为:",str_names.count("tom"))  # 2

5)str.index(sub):从字符串中找到指定子字符串第一个匹配项的索引位置

# str.index(sub):从字符串中找到指定子字符串第一个匹配项的索引位置
print(f"tom出现的索引为:",str_names.index("tom"))  # 5

6)str.strip([chars]):返回原字符串的副本,移除其中的前导和末尾字符。chars为指定要移除字符的字符串。这个方法通常可以用于除去前后空格,或者去掉指定的某些字符

# 需求:去掉字符的前后空格
str_names_strip=str_names.strip(" ")
print("str_names_strip:",str_names_strip)  # jack tom mary hsp nono tom

print("123t123om321".strip("132"))  # t123om

7)str.lower():返回字符串小写的副本,不影响原来的字符

# str.lower():返回字符串小写的副本,不影响原来的字符
# 需求:将字符串字母全部改成小写
str_names="hspHSP"
str_names_lower=str_names.lower()
print("str_names_lower:",str_names_lower)  # hsphsp
print("str_names:",str_names)  # hspHSP

 8)str.upper():返回字符串大写的副本,不影响原来的字符

# str.upper():返回字符串大写的副本,不影响原来的字符
# 需求:将字符串字母全部改成大写
str_names_upper=str_names.upper()
print("str_names_upper:",str_names_upper)  # HSPHSP
print("str_names:",str_names)  # hspHSP

六、字符串的比较

1、字符串比较

1)运算符:>,>=,<,<=,==,!=

2)比较规则:首先比较两个字符串中的第一个字符,如果相等则继续比较下一个字符,依次比较下去,直到两个字符串中的字符不相等时,其比较结果就是两个字符串的比较结果,两个字符串中的所有后续字符将不再被比较

3)比较原理:两个字符进行比较时,比较的是其ordinal value(原始值/码值),调用内置函数ord()可以得到指定字符的ordinal value。与内置函数ord()对应的是内置函数chr(),调用内置函数chr()时指定ordinal value,可以得到其对应的字符

2、字符编码-简单示意图

# ord() 由字符->编码
print(ord('1'))  # 49
print(ord('2'))  # 50
print(ord('a'))  # 97
print(ord('b'))  # 98
print(ord('韩'))  # 38889
print("----------------")
# chr() 由编码->字符
print(chr(38889))  # 韩
print(chr(97))  # a
print(chr(49))  # 1

3、字符串的比较-实例

# 字符串比较
print("tom">"hsp")  # T
print("tom">"to")  # T
print("tom">"tomcat")  # F
print("tom"<"老韩")  # T
print("tom">"tom")  # F
print("tom"<="tom")  # T

七、练习

"""
    统计一共有多少个人名
    思路分析:
    1、使用split方法进行分割
    2、然后统计有多少人名即可
"""
str_names="tom jack mary nono smith hsp"
str_names_list=str_names.split(" ")
print(f"一共有 {len(str_names_list)} 人名")  # 6

# 如果有"hsp"则替换成"老韩"
str_names_re=str_names.replace("hsp","老韩")
print(f"替换后的结果是:{str_names_re}")

# 如果人名是英文,则把首字母改成大写
"""
    思路分析:
    "tom jack mary nono smith hsp 张三" -> "Tom Jack Mary Nono Smith Hsp 张三"
    1、定义字符串str_names_upper来保存新的结果
    2、遍历str_names_list 列表,如果人名是英文名,则将首字母改成大写str.capitalize
    3、拼接到str_names_upper即可
"""
str_names_upper=""
for ele in str_names_list:
    str_names_upper+=ele.capitalize()+" "

# 去掉两边的" "
str_names_upper=str_names_upper.strip(" ")
print(f"如果人名是英文名,则将首字母改成大写 处理结果为:{str_names_upper}")

  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值