基本介绍
1.在python中处理文本数据是使用str对象
2.字符串字面值有三种写法:
- 单引号:'允许包含“双”引号’
- 双引号“—” 三重单引号、三重双引号
使用三重引号的字符串可以跨越多行–其中所有的龙柏字符都将包含在该字面值。
3.字符串是字符的容器,一个字符串可以存放多个字符。
字符串支持索引
一、适用语法
字符串名[索引]
二、举例说明
str_a=“red-green”
比如:要取出str_a字符串的第三个值/元素“d”,则通过str_a[2]就可以访问到。提示:注意索引是从0开始计算的,取出单个字符,类型仍然是字符串。
str_a = "red-green"
print("str_a的第三个值/字符是:", str_a[2], "类型是:", type(str_a))
运行结果:
字符串的遍历
什么是字符串的遍历呢?
就是将字符串中的每个元素依次取出,进行处理操作,就是遍历/迭代。
# 使用while和for遍历字符串
str_b = "hello!-郝小龙"
# while循环遍历
index = 0
while index < len(str_b):
print(f"第{(index + 1)}个元素是{str_b[index]}")
index += 1
print("-"*30)
#for遍历
for ele in str_b:
print(ele)
运行结果如下:
注意事项和细节:
1.字符串索引必须在指定范围内使用,否则会报错,比如:str_d="hello_郝小龙"有效下标为0-9,索引也可以从尾部开始,最后一个元素的索引为-1,往前一位为-2,以此类推。
2.字符串是不可变序列,不能修改。
3.字符串长度没有限制,取决于计算机内存的大小。
str="hi-郝小龙"
#通过索引可以访问元素
print(str[3])
#不能修改元素
# str[3]="李"
运行结果:
常用操作
1.len(str):字符串的长度,也就是包含多少个字符
2.str.replace(old,new,[,count]):返回字符串的副本,其中出现的所有字符串old都将被替换为new,如果给出了可选参数count,则只替换前count次出现。
3.str.split(step=none,maxsplit=-1):返回一个由字符内单词组成的列表,使用step作为分隔字符串。如果给出了maxsplit,则最多进行maxspilt次拆分(因此,列表最多有maxspilt个元素),如果maxsplit未指定区域为-1,则不拆拆分次数。
4.str.count(sub):统计指定字符在字符串中出现的次数。
5.str.index(sub):从字符串中找到指定字符串第一个匹配项的索引位置。
6.str.strip([chars]):返回原字符串的副本,移除其中的前导和末尾字符,chars为指定要移除的字符串。
7.str.lower():返回字符串小写的副本。
8.sstr.upper():返回字符串大写的副本。
#演示字符串常用操作
str_names="jack tom mary hxl nono tom"
#len(str):字符串的长度,也就是包含多少个字符
print(f"{str_names}有{len(str_names)}个字符")
#演示str.replace(old,new[,count])的使用
#需求:将一个“jack”替换为“杰克”,只替换一个
str_names_new=str_names.replace("jack","杰克",1)
#返回字符串的副本,表示原来的字符串不变,而是返回一个新的字符串
print("str_names_new:",str_names_new)
print("str_names:",str_names)
#对str_names按照“ ”进行分割
str_names_split=str_names.split(" ")
print(f"str_names_split内容是{str_names_split}类型是{type(str_names_split)}")
print(f"str_name内容是:{str_names}")
#str.count(sub):统计指定在字符串中出现的次数
#统计tom在字符串中出现了几次
print("tom在字符串出现的次数:",str_names.count("tom"))
#str.index(sub):从字符串中找出指定字符串第一个匹配项的索引位置
print(f"tom出现的索引是:{str_names.index('tom')}")
# #str.strip([chars]):返回原字符串的副本,移除其中的前导和末尾字符,chars为指定要移除字符串
#这个方法通常可以去除前后的空格或者去除指定的某些字符
print(" jack ".strip(" "))
print("123jack321".strip("123"))
#str.lower():返回字符串小写副本,不影响原来字符
str_names="hspHsp"
str_names_lower=str_names.lower()
print("str_names_lower:",str_names_lower)
print("str_names:",str_names)
#str_names_upper():返回原字符的副本,不影响原来的字符
str_names_upper=str_names.upper()
print("str_names_upper:",str_names_upper)
print("str_names:",str_names)
运行结果:
字符串的比较:
- 运算符:>,>=,<,<=,==,!=
- 比较规则:首先比较两个字符串中的第一个字符,如果相等则继续比较下一个字符,依次比较下去,直到两个两个字符串中的字符不再相等时,其比较结果就是两个字符串的所有后续字符将不在比较。
- 比较原理:两个字符比较时,比较是其(原码/码值),调用内置函数ord可以得到指定字符的ordinal.value与内置函数ord对应的是内置函数chr,调用内置函数chr时指定ordinal.value可以得到其对应的字符。
print(ord('1'))
print(ord('2'))
print(ord('a'))
print(ord('b'))
print(ord('郝'))
print(ord('小'))
print(ord('龙'))
print("-"*30)
print(chr(49))
print(chr(40857))
运行结果:
print("tom" > "hxl") # t
print("tom" > "to") # t
print("tom" > "tomcat") # f
print("tom" < "郝小龙") # t
print("tom" > "tom") # f
print("tom" <= "tom") # t