欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 31天Python入门——第3天:对象的方法

31天Python入门——第3天:对象的方法

2025/6/2 0:46:40 来源:https://blog.csdn.net/weixin_57544072/article/details/146298199  浏览:    关键词:31天Python入门——第3天:对象的方法

在这里插入图片描述

你好,我是安然无虞。

文章目录

    • 1. 什么是对象的方法
    • 2. 字符串的方法
      • 2.1 字符串的常用方法
      • 2.2 类型判断
      • 2.3 查找和替换
      • 2.4 字符串常用方法讲解
        • count
        • find
        • split、splitlines
        • join
        • strip、lstrip、rstrip
        • replace
        • startswith、endswith
        • isdigit
        • 字符串的倒序
    • 3. 补充学习
      • 3.1 关键字 in
      • 3.2 字符串不可变

在这里插入图片描述

1. 什么是对象的方法

前面我们已经学习过了好几种类型的对象了,比如:整数类型对象、字符串类型对象、列表类型对象、元组类型的对象等等

对象通常都拥有属于自己的方法(英文叫 method )

对象的方法其实可以看成是对象所拥有的函数

也就是说 这个方法,是 属于 这个对象的函数

调用对象的方法,和调用函数差不多,只要在前面加上 所属对象 和 一个点

比如:

# var1 是一个列表对象
var1 = [1,2,3,4,5,6,7]# 列表对象都有 reverse方法
var1.reverse()
print(var1)

这里, reverse就是列表对象的一个方法,该方法将列表元素倒过来

var1.reverse() 语句就会将列表变量var1 里面的元素倒过来存放

运行结果就是 var1就变成了 [7, 6, 5, 4, 3, 2, 1]

对象的方法是和这个对象 类型 紧密相关的

对象是什么类型,就决定了对象有哪些方法

字符串有字符串的方法,列表有列表的方法,元组有元组的方法

2. 字符串的方法

2.1 字符串的常用方法

  • upper(): 转换字符串中的所有小写字母为大写.

  • lower(): 转换字符串中的所有大写字符为小写.

  • title(): 转换字符串中每个子字符串首字母大写

  • len(字符串)可以获取到字符串的长度.

  • count(子字符串)可以统计某一个子字符串出现的次数.

  • index(子字符串)可以返回子字符串出现的位置.

  • find(子字符串)可以返回子字符串出现的位置.

    • 注意:find()找不到会返回-1,index()找不到会报错
  • strip(): 去除字符串首尾的空字符.

  • split(str, num): 切分字符串, 以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+1 个子字符串.如果是split(),就以空字符来分割

  • join(): 将列表中的字符串元素 以某字符串为连接符, 连接为一个字符串

  • replace(str1, str2): 替换字符串. 将字符串中的str1替换为str2

2.2 类型判断

方法(类型判断)说明
isspace()如果string中只包含空格, 则返回True 否则返回 False
isalnum()如果string中至少有一个字符且所有字符都是字母或者数字, 则返回True 否则返回 False
isalpha()如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
isdecimal()如果 string 只包含十进制数字则返回 True 否则返回 False.
isdigit()如果 string 只包含数字则返回 True 否则返回 False.
isnumeric()如果 string 中只包含数字字符,则返回 True,否则返回 False
istitle()如果 string 是标题化的(所有单词都是以大写开始,其余字母均为小写)则返回 True,否则返回 False
islower()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
isupper()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False

2.3 查找和替换

方法(查找和替换)说明
startswith(x, beg, end)检查字符串是否以x开头,如果beg 或者 end 指定则检查指定的范围内是否以 obj 开头,如果是,返回 True,否则返回 False.
endswith(x, beg, end)检查字符串是否以x结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
find(str, beg, end)检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
index()跟find()方法一样,只不过如果str不在 string中会报一个异常.
replace(str1, str2)替换字符串. 将字符串中的str1替换为str2.

下面来详细介绍常被用到的字符串方法:

2.4 字符串常用方法讲解

count

count 方法可以返回字符串对象包含了多少个参数指定的字符串

# 调用字符串的count 方法,这里返回2,
# 表示该字符串包含了两个 '我们'
'我们今天不去上学,我们去踢足球'.count('我们')
find

find 方法 会在字符串中查找 参数 子字符串,并返回该 参数字符串 在其中 第一个 出现的位置索引

str1 = '我们今天不去上学,我们去踢足球'# 返回 0 , str1字符串中有两个 '我们'
# find返回的是第一个 '我们' 的索引 0
pos1 = str1.find('我们')

如果字符串对象里面 没有 要查找的参数字符串,就会返回 -1

find 方法 的第二个参数,用来指定查找字符串范围,比如

str1 = '我们今天不去上学,我们去踢足球'# 第2个参数 5, 表示从 索引 5 的位置开始往后查找
# 返回的是后面 我们 的索引  9
pos1 = str1.find('我们',5)
split、splitlines

split() 是我们常用的方法, 经常用来从字符串中截取出我们想要的信息.
split() 方法以 参数字符串 为分割符, 将字符串切割为多个字符串, 作为元素存入一个列表, 并返回这个列表.

str1 = '小张:79 | 小李:88 | 小赵:83'
pos1 = str1.split('|')

这里 split() 方法指定 | 作为源字符串str1的分割符, 这样原来的字符串就被分成了3个部分:

小张:79小李:88小赵:83

最后将这三个字符串存入一个列表中返回, 返回的结果就是:

['小张:79 ',' 小李:88 ',' 小赵:83'
]

大家要注意的是:
分割符本身在切割后, 会被丢弃掉, 所以在切割后的字符串中就不会有分割符.

可能有的读者会注意到上面的3个字符串不对齐,

这不是我们的笔误

原来的字符串,被切开后,分隔符前面有的空格字符,会保留下来

小张 前面没有空格,所以切割后,切割出来的结果就没有空格

而 小李 和 小赵 前面是有空格的,切割出来的结果就有空格

而且不一定非要用竖线分割, 我们可以指定任何其他的分割符来分割字符串, 比如:

'小张:79 | 小李:88 | 小赵:83'.split('小赵')

这样就是以 小赵 这个字符串为界分割, 返回结果如下:

['小张:79 | 小李:88 | ',':83'
]

字符串对象中还有 splitlines() 方法也比较常用, 就是把字符串 按换行符 进行切割, 比如:

salary = '''
小王  10000元
小李  20000元
小徐  15000元
'''print(salary.splitlines())

结果输出为:

['', '小王  10000元', '小李  20000元', '小徐  15000元']

这样每行内容作为列表中的一个元素.

splitlines() 方法经常用在文件处理中, 读出文件内容存入字符串, 然后调用字符串的 splitlines() 方法, 把每行内容依次存入列表.

随后循环遍历列表, 就可以逐行分析文件内容了.
可能有人注意到,上例中,为何最后一个换行符没有导致返回的列表最后是一个空字符串呢?

这个函数的行为就是这样设计的(目前我也清楚为何这样设计)

如果要最后也能切出 空字符,使用 salary.split(‘\n’)

下面补充一个练习题:
有类似于这样的一个用于存放股票代码的文件stock.txt:

GC007 | 204007
GC014 | 204014
GC028 | 204028
GC091 | 204091
GC182 | 204182
基金金泰 | 500001
基金泰和 | 500002
基金安信 | 500003
基金汉盛 | 500005
基金裕阳 | 500006
基金景阳 | 500007

题目要求: 请写一个股票信息查询程序,从文件加载数据, 可以让使用者 循环多次 查询股票信息。

每次查询时,提示 请输入要查询的股票名称或代码:

当用户输入股票代码(6位全是数字)时,打印出对应的 股票名称和代码

当用户输入股票名称(不全是数字)时,打印出对应的 股票名称和代码


with open('stock.txt', 'r', encoding='utf-8') as f:# 将股票代码文件逐行读取,并将每列内容作为一个元素存放到列表中infolist = f.read().splitlines()# 以 股票名:股票代码 的形式存放于字典中
stock_code = {}
for info in infolist:# 清除每行前后空格info = info.strip()# 去除空行if not info:continuestock_list = info.split(' | ')name = stock_list[0]code = stock_list[-1]stock_code[name] = codewhile 1:content = input("请输入要查询的股票名称或代码: ")if content.isdigit():# 股票代码for name, code in stock_code.items():if content == code:print(f'股票名称是: {name}, 股票代码是: {code}')else:# 股票名称print(f'股票名称是: {content}, 股票代码是: {stock_code[content]}')
join

join 方法和 split 方法正好相反.

split() 方法是将字符串, 以某字符串为界, 切割成多个字符串 存入列表中

join() 方法是将列表中的字符串元素 以某字符串为连接符, 连接为一个字符串

比如:

'|'.join(['小张:79 ',' 小李:88 ',' 小赵:83'
])

返回的就是字符串 小张:79 | 小李:88 | 小赵:83

相当于把参数列表里面的字符串连接在一起, 中间加上指定的连接符 |

再比如:

'小赵'.join(['小张:79 | 小李:88 | ',':83'
])返回的就是字符串  '小张:79 | 小李:88 | 小赵:83'

相当于把参数列表里面的字符串连接在一起, 中间加上指定的连接符 小赵

strip、lstrip、rstrip

strip() 方法会将字符串左边和右边的空格删掉, 但是不会删除字符串中的空格

比如:

'      小  李:88       '.strip() 返回的就是 '小  李:88',去掉了前后的空格,但是中间的空格不会去掉

lstrip方法 将 字符串前面 (左边) 的空格删除,但是不会删除字符串中间和右边的空格

比如:

'      小  李:88       '.lstrip() 返回的就是 '小  李:88       '

rstrip方法 将 字符串后面 (右边) 的空格删除,但是不会删除字符串中间和左边的空格

比如:

'      小  李:88       '.rstrip() 返回的就是 '      小  李:88'
replace

replace() 方法也是常用的方法之一, 用来替换字符串里面所有指定的子字符串为另一个字符串.

比如:

str1 = '我们今天不去上学,我们去踢足球'
str1 = str1.replace('我们', '他们')

上面的replace()方法就是把字符串中的‘我们’替换成了‘他们’
结果就是: ‘他们今天不去上学,他们去踢足球’

startswith、endswith
  • startswith() 方法用来检查字符串是否以参数指定的字符串开头, 如果是, 返回True, 否则返回False

  • endswith() 方法用来检查字符串是否以参数指定的字符串结尾, 如果是, 返回True, 否则返回False

str1 = '我们今天不去上学,我们去踢足球'
str1.startswith('我们')  # 返回 True
str1.endswith('我们')    # 返回 False
isdigit

isdigit() 方法检查字符串是否全部由数字构成, 如果是, 返回True, 否则返回False

比如我们可以通过 isdigit() 方法判断用户输入的电话号码是否全部是数字字符

str1 = input('请输入手机号码:')
if not str1.isdigit(): # 不是全部由数字字符构成print('您输入的手机号码不正确,必须全部是数字')
字符串的倒序

要得到字符串的倒序, 只需要使用切片操作 [::-1] 即可

:: 表示切片字符串从头到尾, 也就是全部内容, 而步长-1表示, 颠倒过来取元素, 如下:

str1 = '字符串的倒序'
reverse = str1[::-1]
print(reverse)

3. 补充学习

3.1 关键字 in

如果我们要写一个程序,让用户输入身高和体重,如下

str1 = input('请输入您的身高 和 体重, 用逗号隔开')

如果我们想判断 用户输入的字符串中是否包含了逗号 , 可以使用关键字 in ,如下

str1 = input('请输入您的身高 和 体重, 用逗号隔开')
if ',' in str1:print('您的输入包含了逗号')

还可以使用 not in 表示不包含:

str1 = input('请输入您的身高 和 体重, 用逗号隔开')
if ',' not in str1:print('您的输入格式错误,缺少逗号')

同理, in 不仅可以用在字符串对象上, 也可以用在元组、列表对象上, 比如:

tuple1 = (1,2,3,4,5)
list1 = [1,2,3,4,5]if 1 in tuple1:print('tuple1 中包含了数字 1')
if 1 in list1:print('list1 中包含了数字 1')

3.2 字符串不可变

看这个示例:

a =  '      小李       '
a.strip()
print(a,len(a))b =  '      小李       '
b.replace(' ','')
print(b,len(b))

运行结果,可以发现 变量a、b 分别调用 strip、replace 方法后,

再次打印,发现a、b 对应的还是原来的内容,没有变化

为什么?

因为 a.strip() , b.replace(’ ‘,’') 并不能改 a、b 字符串的内容

字符串内容是不可变化的, a.strip() , b.replace(’ ‘,’') 返回了一个新的字符串对象,去掉空格, 但是原来的 a、b 并没有变化

我们可以像下面这样修改:

a =  '      小李       '
a = a.strip()  # 变量名a重新赋值
print(a,len(a))b =  '      小李       '
b = b.replace(' ','') # 变量名b重新赋值
print(b,len(b))

让变量名重新赋值, 对应返回的是新对象

这样,原来的a、b对应的字符串虽然仍然不会变化, 但是 a、b 这两个变量名对应了新的字符串对象,所以打印 a、b 就是新的内容了

遇见安然遇见你,不负代码不负卿。
谢谢老铁的时间,咱们下篇再见~

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词