python必学系列之 字符串的基本内置方法

要求:输入两个字符串,从第一个字符串中删除第二个字符串中有的字符

方法一:灵活的使用for循环遍历中的in和not  in

s1 = input("请输入字符串s1:")
s2 = input("请输入字符串s2:")
s3 = ''
for i in s1:
   if i not in s2:
       s3 += i
s1 = s3    ###因为最后要输出的是s1,左移最后将s3赋给s1
print(s1)



请输入字符串s1:dqw twe gqwhlk
请输入字符串s2:weqe
d t ghlk

方法二:字符串的操作方法replace的使用

s1 = input("请输入字符串s1:")
s2 = input("请输入字符串s2:")
for i in s2:
    s1 =s1.replace(i,'')   ###使用空格将查找到的字符进行替换掉
print(s1)


请输入字符串s1:dqw twe gqwhlk
请输入字符串s2:weqe
d t ghlk

字符串相关操作的命令

 

(1)id方法的使用            三引号的输出形式           == is比较得不同

1:使用id()方法查看数据的内存地址

注意:使用三引号一般都代表原样输出

s1 = 'adc'
s2 = "adc"
s3 = '''
    abc             
'''
 ###发现使用三引号占用的内存地址和使用单双引号的不同(前提;三引号的内容不再一行上,有换行)                    
print(id(s1),id(s2),id(s3))



2576607765816 2576607765816 2576608677680


s1 = 'adc'
s2 = "adc"
s3 = '''
abc
'''


##如果使用== 或者 is比较返回的结果都是True或者False

print(s1 == s2)     ##  ==比较的是两个字符串的内容是否一样
print(s1 is s2)     ##  is比较得是两个字符串的地址空间是否一样
print(s2 == s3)     ##  使用三引号时会默认输出一个空行
print(s2 is s3)

True
True
False
False


使用input输入字符串时,input输入底层做了处理所以最后的地址时不一样的了,而使用常量赋值时,地址空间是一样的
s1 = input("请输入:")
s2 = input("请输入:")
print(s1,s2)
print(s1 == s2)
print(s1 is s2)
print(id(s1),id(s2))

abc abc
True
False
2227377753984 2227377751016

(2) 字符串的运算符 ‘’+‘’  “*”  “in”

s1 = input("请输入:")
s2 = input("请输入:")
s3 = s1 + s2     ## + 相当于拼接符
s4 = s2 * 5      ## * 相当于倍数
print(s3,s4)


请输入:qdf
请输入:qer
qdfqer qerqerqerqerqer

# in 在....里面
name = "student"
result = 'tu' in name
print(result)    ##返回结果为布尔类型,不是true就是false

True

# not in 不在...里面
name = "student"
result = 'tu' not in name
print(result)

False


##  %字符串的格式化
name = "student"
print("%s说以后要好好学习" %name)   ###中间不能加逗号

student说以后要好好学习

(3)截取字符串的应用 [ ]

filename = 'picture.png'
print(filename[0:3])   ##  截取对应的数字对应的是字符串的下标,是从0开始的 并且包前不包后

pic

===============================================

如果只选取字符串中的一个字母,则不需要加 :

filename = 'picture.png'
print(filename[3])

t

==============================================

#省略 
filename = 'picture.png'
print(filename[3:])    ##如果只要省略的是后面的则表示一直取到字符串的结尾


ture.png


filename = 'picture.png'
print(filename[:6])    ##如果省略的是前面的,则表示从0开始取值


pictur

===============================================

如果切片中存在负数,代表的是从后向前取值,最后一个代表的是-1
filename = 'picture.png'
print(filename[:-1])    ### 0开始取一直取到-1
print(filename[5:-1])   ### 从下标为5的开始取值,一直取到-1,并且是包前不包后的


picture.pn
re.pn


===============================================

字符串的倒序输出 [ ::]  ###此时就可以使用两个冒号,最后的冒号后面的-1代表的是从右向左取值输出
filename = 'picture.png'
print(filename[::-1])

gnp.erutcip



filename = 'picture.png'
print(filename[6:2:-1])


erut

================================================



filename = 'picture.png'
print(filename[-2:-5:-1])   

np.

===============================================
filename = 'picture.png'
print(filename[1:7:2])    ###指定步长

itr




练习:字符串的切片练习
'''
字符串为:hello world
1:逆向输出world
2:正向输出hello
3:逆序输出整个hello world
4:打印获取oll
5:打印llo wo
'''

s1 = "hello world"
print(s1[-1:-6:-1])
print(s1[0:6])
print(s1[::-1])
print(s1[-7:-10:-1])
print(s1[2:8])




(4)字符串的内建函数

1:关于大小写相关的

message = 'yz is a good student'
msg1=message.capitalize()   ##将字符串的第一个字母变成大写
print(msg1)

print(message.title())   ##返回的是每个单词首字母都是大写的字符串

msg2=message.istitle()   ##判断该字符串的首字母是否都是大写,返回的结果是布尔类型的值
print(msg2)

msg3 = message.upper()   ##将字符串的所有字母都变成大写
print(msg3)

msg4 = msg3.lower()     ###将字符串的所有字母都变成小写
print(msg4)



验证码案例:

import random
s = 'ADASDADKDIFIOPJIAHfcbwiehfqdjaqwodqdh14853217^$%*&@#^^&2'
code=''
for i in range(4):
    num = random.randint(0,len(s)-1)   ###这里减1是因为,字符串的对应的下标的值比字符串本身的长度少1
    code += s[num]
print('验证码为:',code)

user_input = input("请输入验证码:")
if code.lower() == user_input.lower():   ###将系统产生的验证码和用户的输入的验证码都进行一个小写的转换,更加符合正式的环境,当我们输入验证码的时候,无论用户输入的是大写还是小写都可以进行
    print("验证码正确")
else:
    print("验证失败")

2:查找 替换相关的方法

find方法使用

index和find的用法是一样的,只不过但是如果没有找到想要找的字符时会报错。

find命令的结果为:find(‘需要查找的字符’,开始的位置,结束的位置)

##使用in 或者 not in也可以对字符串中是否存在该字符进行判断,但是其只能返回布尔类型的值
s = " index luck lucky goods "
restult = 'l' in s
print(restult)

True

================================
s = "index luck lucky goods"
position = s.find('i')
print(position)            ###如果使用find找到了对应的值所在的位置,及索引值

0 ##返回值为下标


s = " index luck lucky goods "
position = s.find('v')
print(position)            ###如果使用find如果没有找到对应的值,则会返回-1

-1   ##如果没有找到,统一的返回值都是-1


s = "index luck lucky goods"
position = s.find('l')
print(position)

6   ###如果某个字符串中存在多个相同的值,则返回的值为第一次找到的对应的索引值


s = "index luck lucky goods"
position = s.find('l')
print(position)
p = s.find('l',position+1,len(s))   ##此时可以通过指定寻找的开头和结尾来进行查找
print(p)


6
11

#rfind 从字符串的右侧开始查找
#lfind 从字符串的左侧开始查找

url = 'https://www.baidu.com/img/bd_logo1.png'
p = url.rfind('/')   ##先找到最后一个/的位置
print(p)
p1 = url[p+1:]       ##然后再将后面的字符串给输出来
print(p1)

25
bd_logo1.png

3:替换replace方法的应用

##replace的语法格式 replace(字符串中存在的(ord),想替换成什么(new),数字(替换的个数))
s1 = 'adq fdqw fqqqd'
s2=s1.replace(' ', '-')
print(s2)
s3=s1.replace(' ', '')
print(s3)
s4=s1.replace(' ', '',1)   ###不指定数字时。默认替换字符串中所有的
print(s4)


adq-fdqw-fqqqd   ###将所有的空格都替换成-
adqfdqwfqqqd     ###将所有的空格替换成空
adqfdqw fqqqd    ###只替换第一个遇到的空格

4:判读字符串的开头和结尾的方法(startwith(),endwith())

##startwith() endwith() 返回值都是布尔类型的

filename = 'python笔记.doc'
result = filename.startswith("python")
print(result)
result1 = filename.endswith("doc")
print(result1)

True
True


例题:

'''
要求:给定一个文件的路径,上传文件(只能是记事本txt或者是图片jpg格式的)
如果不是对应的格式的,允许重新上传文件
如果符合上传的文件符合格式要求则提示
'''
方法1:
while True:
    file  = input("请输入你要上传的文件:")
    gs = file.rfind(".")
    file1 = file[gs+1:]
    if file1 == 'txt' or file1 =='jpg':
        print("文件上传成功")
        break
    else:
        print("文件上传失败请重新上传")

方法2:
while True:
    file  = input("请输入你要上传的文件:")
    if file.endswith("txt") or file.endswith("jpg"):
        print("文件上传成功")
        break
    else:
        print("文件上传失败请重新上传")

字符串的内建函数 encode编码 decode解码

msg = '我是个好学生'
msg1=msg.encode('utf-8')  ###指定utf-8编码,如果不指定的话,默认的也是utf-8编码的
print(msg1)
msg2=msg1.decode()
print(msg2)


b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xaa\xe5\xa5\xbd\xe5\xad\xa6\xe7\x94\x9f'
我是个好学生

字符串字母或者数字的判断

#isalpha() 判断字符串至少有一个字符,并且所有的字符全是真则返回真
#isalnum() 判断字符串至少有一个字符,并且所有的字符都是字母或者数字则返回真
#isdigit() 如果字符串全为数字则返回True
s = 'dqwd6'
result = s.isalpha()
print(result)

s1 = '65465'
result1 = s1.isalnum()
print(result1)

False
True


'''
要求输入三个整型的数字,并且统计他们的和
'''
#注意:因为有可能会存在输入错误的情况,所有不能使用for循环,只能使用while,因为while循环存在i+1机制

sum = 0
i =1
while i <=3:
    num = input("请输入数字:")
    if num.isdigit():
        num1 = int(num)
        sum += num1
        print("{}数字输入成功:".format(i))
        print(sum)
        i+=1
    else:
        print("请输入正确的格式")

字符串的join方法 一般用于将一个列表转换成一个字符串

#以指定字符作为分割符,将括号中的所有元素与之前的字符串合并成一个新的字符串
#使用join方法返回的是一个字符串类型的
new_str = '*'.join('abc')
print(new_str)
new_str1 = ''.join('abc')
print(new_str1)

##重点:将一个列表转换成字符串类型的
list1 = ['d','e','你好','9']
print(type(list1))
result = ''.join(list1)
print(result)
print(type(list1))


a*b*c
abc
<class 'list'>
de你好9
<class 'list'>

分割字符串 split()方法 一般用于字符串向列表的转换

s = 'weq qeq qeq dda'
list1 = s.split(' ')  ##引号之间的可以用来指定分割符
list2 = s.split('e')  ##此时我指定用e来进行切割
print(list1)
print(list2)
print(type(list1))

['weq', 'qeq', 'qeq', 'dda']
['w', 'q q', 'q q', 'q dda']
<class 'list'>


s = 'weq qeq qeq dda'
list1 = s.split(' ',2)  ##引号之间的可以用来指定分割符,后面的2表示切几次
print(list1)
print(type(list1))

['weq', 'qeq', 'qeq dda']
<class 'list'>

count方法 判断字符串中指定字符的个数

s = 'weq qeq qeq dda'
num = s.count('d')   ###字符串中d的个数
num1 = s.count(' ')  ###字符串中空格的个数
print(num)
print(num1)

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python的必备技能包括以下几个方面: 1. 基础语法:掌握Python基本语法、数据类型、变量、运算符等基础知识,能够编写简单的Python程序。 2. 控制流程:了解条件语句(if-elif-else)、循环语句(for、while)、异常处理等控制流程的使用,能够编写具有较复杂逻辑的程序。 3. 数据结构:熟悉Python中常用的数据结构,如列表(list)、元组(tuple)、字典(dictionary)、合(set)等,并掌握它们的基本操作和常用方法。 4. 函数和模块:了解函数的定义和调用,理解参数传递的方式(包括位置参数、关键字参数、默认参数等),并能够编写自定义函数。同时,掌握模块的导入和使用,了解常用的内置模块和第三方库的使用方法。 5. 文件操作:能够读写文件,了解文件操作相关的函数和方法,并能够处理文件中的数据。 6. 异常处理:掌握异常处理的基本概念和语法,能够捕获和处理程序中的异常,提高程序的健壮性。 7. 面向对象编程:了解面向对象编程的概念和基本语法,能够定义类、创建对象,并使用类的属性和方法。 8. 正则表达式:了解正则表达式的基本语法和常用方法,能够用于字符串匹配、替换等操作。 除了以上的技能,还可以根据具体需求学习相关的库和框架,如数据分析库(如Pandas、NumPy)、Web开发框架(如Django、Flask)、机器学习库(如Scikit-learn、TensorFlow)等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值