字符串(str)的常用操作
字符串中的每个元素都有一个坐标,我们称之为索引,字符串的索引从左往右是从0开始,从右往左是从-1开始
字符串的索引取值
s = "Learning makes me happy!"
# 字符串的索引取值,可通过负索引进行取值
print(s[5])
print(s[-19])
# 输出结果
i
i
字符串的切片
s = "Learning makes me happy!"
# 字符串的指定位置取值(取头不取尾)
print(s[5:7])
print(s[-9:-2])
# 字符串指定位置取值,第三个参数表示步长
print(s[2:9:2])
# 通过切片将字符串反转
print(s[-1::-1])
# 输出结果
in
me happ
ann
!yppah em sekam gninraeL
字符串的查找(find)
s = "Learning makes me happy!"
# 查找字符串,返回的为字符串的起始位置
print(s.find('me'))
# 查找字符串,未找到的时候返回-1
print(s.find('eat'))
# 查找字符串,返回的为从前往后找到的第一个字符
print(s.find('e'))
# 查找指定位置后字符串,第一个参数为查找的字符,第二个参数为查找的起始位置
print(s.find('m', 9))
# 输出结果
15
-1
1
9
字符串的统计(count)
s = "Learning makes me happy!"
# 统计字符在字符串中出现的次数
print(s.count('e'))
# 未找到则返回0
print(s.count('abc'))
# 输出结果
3
0
字符串的替换(replace)
s = "Learning makes me happy!"
# 替换指定的字符串片段,第一个参数填入需要替换的字符串,第二个参数填入新字符串
print(s.replace('me', 'us'))
# 指定次数进行替换,第三个参数传入的为替换次数
s1 = 'abc123abc456abc789'
print(s1.replace('abc','www',3))
# 输出结果
Learning makes us happy!
www123www456www789
字符串的分割(split)
注意点:分割后的字符串以列表(list)的形式存储
s = "Learning makes me happy !"
# 以' '进行分割
print(s.split(' '))
# 输出结果
['Learning', 'makes', 'me', 'happy', '!']
将字符串转换为大写(upper)
s = "Learning makes me happy !"
# 将字符串转换为大写
print(s.upper())
# 输出结果
LEARNING MAKES ME HAPPY !
将字符串转换为小写(lower)
s = "Learning makes me happy !"
# 将字符串转换为小写
print(s.lower())
# 输出结果
learning makes me happy !
识别字符串表达式,并返回表达式的值(eval)
s = "[1,2,3,4,5]"
# 识别字符串中的列表(list)表达式,将其结果返回
print(eval(s))
print(type(eval(s)))
# 识别字符串中的运算符表达式,将其结果返回
s1 = '5+6'
print(eval(s1))
print(type(eval(s1)))
# 输出结果
[1, 2, 3, 4, 5]
<class 'list'>
11
<class 'int'>
字符串的格式化输出(format,%,F表达式)
user = ['zhou', 18, 185]
方法一:format格式化输出
# format输出,身高保留两位小数
print('用户的姓名为 : {},年龄为 : {}, 身高为 : {:.2f},请仔细核对'.format(user[0], user[1], float(user[2])))
方法二:传统的格式化方法
%s:表示字符串格式化
%d:表示数字格式化
# %格式化输出,身高保留两位小数
print('用户的姓名为 : %s,年龄为 : %s, 身高为 : %.2f,请仔细核对' % (user[0], user[1], float(user[2])))
方法三:F表达式
# F表达式进行输入,身高保留两位小数
print(F'用户的姓名为 : {user[0]},年龄为 : {user[1]}, 身高为 : {float(user[2]) :.2f},请仔细核对')
输出结果
用户的姓名为 : zhou,年龄为 : 18, 身高为 : 185.00,请仔细核对
用户的姓名为 : zhou,年龄为 : 18, 身高为 : 185.00,请仔细核对
用户的姓名为 : zhou,年龄为 : 18, 身高为 : 185.00,请仔细核对
去除首尾指定字符(strip)
s = " Learning makes me happy! "
# 去除首尾字符空格
print(s.strip())
s1 = "0000Learning makes me happy!0000"
# 去除首尾指定字符0
print(s1.strip('0'))
s2 = "Learning makes me happy!"
# 指定去除左边(left)的大写字符'L'
print(s2.lstrip('L'))
s3 = "Learning makes me happy!"
# 指定去除右边(right)的字符串'happy!''
print(s3.rstrip('happy!'))
# 输出结果
Learning makes me happy!
Learning makes me happy!
earning makes me happy!
Learning makes me
字符串拼接
方法一:使用 '+' 进行拼接
s1 = 'hello'
s2 = 'world'
s3 = '!'
# 使用 + 进行字符串拼接
print(s1 + ' ' + s2 + ' ' + s3)
# 输出结果
hello world !
方法二:使用 'join' 进行拼接
s1 = 'hello'
s2 = 'world'
s3 = '!'
s4 = ' '
# 使用join进行拼接
print(s4.join((s1, s2, s3)))
# 输出结果
hello world !
计算字符串的长度(len)
==在计算字符串的长度的时候,我们需要区分字符串的编码,汉字在GBK/GBK2312
编码中占2个字节,在UTF-8/umicode
编码中占用三个字节(或4个字节)
str1 = '人生苦短,我用python!'
# 默认的python计算字符串长度
print(len(str1))
# 获取UTF-8编码的字符串长度
print(len(str1.encode()))
# 获取GBK编码的字符串的长度
print(len(str1.encode('GBK')))
# 输出结果
14
30
22
字符串转义
换行符( )
# 换行符
的使用
print("这是第一行
这是第二行")
# 输出结果
这是第一行
这是第二行
制表符( )
# 制表符 的使用
print("hello world !")
# 输出结果
hello world !
关闭转义(r)
# 关闭转义r的使用
print(r"这是第一行
这是第二行")
# 输出结果
这是第一行
这是第二行
查看数据的内存地址是否一致
注意:-5 到 256 中int,float数值的内存地址一样,超过的内存地址不一样
a = 10
b = 10
c = 11
# 分别查看对应的内存地址
print(id(a), id(b), id(c))
# 比较内存地址是否一致,返回布尔型
print(a is b)
print(a is c)
print(b is not c)
# 输出结果
8791081185824 8791081185824 8791081185856
True
False
True
字符串的其他方法还有非常多,这里只是记录了一小部分,如果想深入学习,推荐去Python官方查看String -- 常见的字符串操作官方文档或者移步菜鸟教程学习更多的字符串操作