python 里的字符串函数

python 里的字符串函数

一: 字符串介绍

1.1 什么是字符串

字符串是一种表示文本的数据类型,使用str 表示.可以使用单引号'' ; 双引号""; 三引号''''''; 来定义

复制a='123'
b="123"
c='''123'''
print(type(a))
print(type(b))
print(type(c))

# 输出结果
<class 'str'>
<class 'str'>
<class 'str'>

1.2 转义字符

对于特殊字符,我们可以使用 反斜线\  来进行转义

复制# 如果使用单引号定义字符串,字符串里面包含单引号则报错
a = 'I'm  zhangsan'

#使用反斜线 \ 对单引号’ 进行转义
b = 'I\'m zhangsan'

# 或者如果字符串里包含单引号,可以使用双引号“” 定义字符串

c = "I'm zhangssan"


1.3常用的转义字符

转义字符 代表含义
\(在行尾时) 反斜杠符号,可以换行输入
\\ 反斜杠符号,仅表示反斜杠
\" 双引号
\n 换行
\b 退格
\t 横向制表符

二:字符串输入输出

2.1 字符串格式化输出

使用 %s 格式化字符串

复制name = "zhangsan"
age = 18
gender = "nan"

# 可以理解为%s 相当于占位符,为后面%的内容占位
print("他叫%s" %name)

# 多个%s 的使用
print("他叫%s,%s,%s" %(name,age,gender))

# 输出结果
他叫zhangsan
他叫zhangsan,18,nan

常见的格式化符号

格式化符号 转换
%s 字符串
%d 有符号十进制整数
%f 浮点实数

2.2 字符串输入

python3中可以使用input函数,从标准输入读取一行文本。默认的标准输入是键盘。

input可以接受一个python表达式作为输入。并将结果返回

复制name = input("请输入您的姓名:")
# 读取进来的是字符串,使用int()函数将其转换为整型
age = int(input("请输入您的年龄:"))
print(name,age)

# 输出结果
请输入您的姓名:zhangsan   # 键盘输入zhangsan
请输入您的年龄:8          # 键盘输入 8
zhangsan 8

三:访问字符串中的值

3.1 字符串的存储方式

字符串每个字符都对应一个下标,下标编号是从0开始

复制name = "abcdefg"

# 输出字符串下标为0 的字符
print(name[0])

print(name[1])
print(name[6])

# 输出结果:
a
b
g

3.2 字符串切片

切片语法格式:

[起始:结束:步长]

ps:切片选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位前一位结束(不包含结束位本身).

复制# 演示字符串切片

a = "Hello,I'm#zhangsan."
# 使用len()函数,获取字符串长度
print(len(a))

# 打印下标为 5 的字符(即,第6个字符)
print(a[5])

# 打印下标为 5 到 下标10 (注意,左闭右开)
print(a[5:11])

# 从头开始,打印到下标 5
print(a[0:4])
print(a[:5])

# 从下标5开始,打印到最后一个
print(a[5:])

# 从下标5开始,打印到倒数第二个
print(a[5:-1]) # -1 表示倒数第一个字符串.由于是左闭右开,所以会打印到倒数第二个

# 打印下标 5 到 下标10 ,步长为2 (即,从下标5开始,打印5,7,9)
print(a[5:11:2])

# 从最后一个开始,没隔一个字符打印(即,步长为2)
print(a[::-2]) # [::]表示从开头取值到结尾. -2 表示,从末尾开始,步长为2,打印


# 输出结果:
19
,
,I'm#z
Hell
Hello
,I'm#zhangsan.
,I'm#zhangsan
,'#
.agazmIolH

四: 字符串内建函数

4.1 常用的字符串内建函数

字符串函数 释义
len(string) 返回字符串长度
string.find(str[,start[,end]]) 检测 str 是否包含在 string 中,如果 start 和 end 指定范围,则检查是否包含在指定范围内,
如果是返回开始的索引值,否则返回-1
rfind(str, beg=0,end=len(string)) 类似于 find()函数,不过是从右边开始查找.
string.index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在 string中会报一个异常.
rindex( str, beg=0, end=len(string)) 类似于 index(),不过是从右边开始.
count(str, beg= 0,end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
replace(old, new [, max]) 把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。
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 指定值,则在指定范围内检查。
endswith(suffix, beg=0, end=len(string)) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
lstrip() 截掉字符串左边的空格或指定字符。
rstrip() 删除字符串末尾的空格或指定字符。
strip([chars]) 在字符串上执行 lstrip()和 rstrip()

4.2 演示字符串内建函数


4.2.1 find /rfind函数

string.find(str[,start[,end]])

检测 str 是否包含在 string 中,如果 start 和 end 指定范围,则检查是否包含在指定范围内,
如果是返回开始的索引值,否则返回-1

复制a = "Hello,I'm Tom"
b = "Hello"
c = "I'm Lucy"

# 查询a的长度
print(len(a))

# 查询 b 是否在a中
print(a.find(b))

# 从a的下标为3开始到10结束,查询是否包含b
print(a.find(b,3,11))

# 查询 c 是否 在a中
print(a.find(c))

# 使用find 函数,从左边向右边查询,查询a 中包含字符串"o" 的下标位置(第一个查询到的位置)

print(a.find("o"))

# 使用rfind 函数,从右边开始向左查询,查询a 中包含字符串"o" 的下标位置(第一个查询到的位置)
print(a.rfind("o"))

#输出结果:
13    
0 
-1
-1
4
11

4.2.2 index函数

string.index(str, beg=0, end=len(string))

跟find()方法一样,只不过如果str不在 string中会报一个异常.

复制a = "Hello,I'm Tom"
b = "Hello"
c = "I'm Lucy"

print(a.index(b))
print(b.index(c))

# 返回结果:
0
ValueError: substring not found

4.2.3 count函数

count(str, beg= 0,end=len(string))

返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数

复制a = "Hello,I'm Tom"

# 查看a中,字符串"o"出现次数
print(a.count("o"))

# 查看a的下标0到6中,出现字符串"o"的次数
print(a.count("o",0,7))

# 输出结果:
2
1

4.2.4 replace 函数

replace(old, new [ , max])
把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。

复制a = "Hello,I'm Tom.I'm 18 years old.My school is hahaha"

# 将a中的字符串"o" 替换为"A"
print(a.replace("o","A"))

# 将a中的字符串"o" 替换为"A",最多替换2次
print(a.replace("o","A",2))

# 输出结果:
HellA,I'm TAm.I'm 18 years Ald.My schAAl is hahaha
HellA,I'm TAm.I'm 18 years old.My school is hahaha

4.2.5 split函数

split(str="", num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串

复制a = "Hello,I'm Tom.I'm 18 years old.My school is hahaha"

# 将a按照 . 分割
print(a.split("."))

# 将a按照 . 分割,分割1次
print(a.split(".",1))

# 输出结果:
["Hello,I'm Tom", "I'm 18 years old", 'My school is hahaha']
["Hello,I'm Tom", "I'm 18 years old.My school is hahaha"]

4.2.6 startwith和endsoth

startswith(substr, beg=0,end=len(string)) 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。
endswith(suffix, beg=0, end=len(string)) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
复制a = "hello,I'm LiLei,How are you!Hello"
b = "Hello"
c = "I'm LiLei"

print(a.startswith('hello'))
print(a.startswith('Hello'))
print(a.startswith('Hello',28))

print("-----")

print(a.endswith('Hello'))
print(a.endswith('hello'))
print(a.endswith('hello',0,5))

# 输出结果
True
False
True
-----
True
False
True


4.2.7 lstrip ,rstrip , strip 函数

lstrip() 截掉字符串左边的空格或指定字符。
rstrip() 删除字符串末尾的空格或指定字符。
strip([chars]) 在字符串上执行 lstrip()和 rstrip()
复制a = "hello,I'm Lucy,How are you!hello"

print(a.lstrip('hello'))
print(a.rstrip('hello'))
print(a.strip('hello'))

# 输出结果
,I'm Lucy,How are you!hello
hello,I'm Lucy,How are you!
,I'm Lucy,How are you!

4.2.8 format 函数

string.format()

格式化字符

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

复制a = "abc"
b = 123

print("{}{}".format(a,b))

print("{1}{0}".format(a,b))

#输出结果:
abc123
123abc



4.2.9 parttion 函数和rpartion

string.partition(str)

有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string

复制a = "abc#123#def#456"
# 从左边开始出现的第一个#字符开始分割
print(a.partition("#"))
# 从右边开始出现的第一个# 字符开始分割
print(a.rpartition(("#")))

#输出结果
a = "abc#123#def#456"
print(a.partition("#"))
print(a.rpartition(("#")))

4.3 字符串运算符

操作符 描述
+ 字符串连接
* 重复输出字符串
[] 通过索引获取字符串中的字符
[:] 截取字符串中的一部分
in 成员运算符,如果字符串中包含给定的字符,返回True
not in 成员运算符。如果字符中不包含给定的字符,返回True
r/R 表示原始字符串,即字符串的所有字符都按照字面的意思使用。没有转义字符或不能打印的字符.
复制a = "abc"
b = "def"

print(a+"---",b)

print("#"*5)
print(a[0])
print(a[0:1])

print("a" in a)
print(b in a)

print("o" not in a)
print("a" not in a)

print('haha \n AAA')
print(r'haha \n AAA')

# 输出结果
abc--- def
#####
a
a
True
False
True
False
haha 
 AAA
haha \n AAA

4.4 字符串使用示例

给定一个字符串 "你好,我叫{},我的年龄是:{},我的性别是:{}

要求:

  1. 通过输入,把姓名,年龄,性别填充进去
  2. 切割上面的字符串,把第二个逗号后面的内容去掉
  3. 把上面的结果字符串,按照逗号分割成列表
  4. 把第二个结果字符串和第三个结果字符串用 ''' 拼接(至少两个方案)
  5. 判断第二个字符串是否在第一非字符串中(至少3个方案)
  6. 替换所有的我,变为他
  7. 把所有中文冒号,替换成英文冒号
复制
name=input("请输入您的姓名:")
age=input("请输入您的年龄:")
sex=input("请输入您的性别:")

# 1
a="你好,我叫:{0},我的年龄是:{1},我的性别是:{2}"

result1=a.format(name,age,sex)
print(result1)

# 2 利用rfind 函数,从右边获取最后一个逗号的下标
num=(result1.rfind(','))
# 在使用字符串截取的方式
result2=result1[:num]
print(result2)

# 用partition 函数,以逗号为分隔,将字符串分成三个元祖形式的列表
result3=(result2.partition(','))
print(result3)

# 使用str() result2 和result3 转换为字符串,在使用+ 拼接
result4_1=str(result2)+"'''"+str(result3)
print(result4_1)

# 使用format 拼接
result4_2="{0}{1}{2}".format(result2,"'''",result3)
print(result4_2)

# 5
# 使用in 成员运算符,如果resutl1 包含result2字符,则返回True
if result2 in result1:
    print("yes")
# 使用find 函数,如果result1 中包含resutl2,则返回下标。否则返回-1
result5_2=result1.find(result2)
if result5_2 != -1:
    print("yes")

# 使用index函数,如果resutl1 包含result2,则返回下标(>=0) ,否则报错
result5_3=result1.index(result2)
if result5_3 >= 0:
    print("yes")

# 替换使用replace 函数
result6 = result1.replace("我","他")
print(result6)

result7 = result1.replace(":","is")
print(result7)


# 输出结果:
请输入您的姓名:zhangsan
请输入您的年龄:18
请输入您的性别:nan
你好,我叫:zhangsan,我的年龄是:18,我的性别是:nan
你好,我叫:zhangsan,我的年龄是:18
('你好,我叫:zhangsan', ',', '我的年龄是:18')
你好,我叫:zhangsan,我的年龄是:18'''('你好,我叫:zhangsan', ',', '我的年龄是:18')
你好,我叫:zhangsan,我的年龄是:18'''('你好,我叫:zhangsan', ',', '我的年龄是:18')
yes
yes
yes
你好,他叫:zhangsan,他的年龄是:18,他的性别是:nan
你好,我叫iszhangsan,我的年龄是is18,我的性别是isnan

posted @   知己一语  阅读(733)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示