day09字符串相关方法

本文介绍了Python字符串的基础知识,包括字符串的回顾、相关函数、方法及转义字符。讲解了str、eval函数,字符串的join、split、replace等方法,并通过实际作业展示了如何操作字符串。还探讨了字符串的转义字符,以及一系列字符串处理的实战例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

day 09 字符串

一,回顾

元组:

不可变,有序,元素可以为任意元素

集合:

可变的,无序的

元素唯一且为不可变数据类型

集合运算:&—交际

​ |----并集

​ - 差集

​ ^ ----对称差集

字符串:

r字符串,在字符串前面加r,字符串中所有的转义字符都无效

字符编码:

​ chr( )------------输入编码查询对应的字符

​ ord( )--------- --输入字符串查询编码

二,字符串相关函数

str(数据)-----------所有数据都能转化成字符串,在数据的打印值外加引号

eval(字符串)--------获取指定字符串引号中的内容

​ 本处字符串去掉引号后必须是一个合法的表达式

三,字符串相关方法

join

str.join(序列)-------将序列中的元素用指定的字符串连接成一个新的字符串,学列中的元素必须都是字符串

list=["hello","world","你好","世界"]
result="".join(list)
print(result)

result=",".join(list)
print(result)

nums=[10,20,30,40,50]
result="".join([str(x) for x in nums])

将下列数字的所有个位数拼接成一个数字字符串
nums=[10,29,30,4,52]
nums = [10, 29, 30, 4, 52]
result="".join([str(x % 10) for x in nums])
print(result)

将list1中所有的数字用'+'连接,并且计算他们的和:  
list1=[19,"abc",True,1.23,8,22.2,"环境"]
result="+".join([str(x) for x in list1 if type(x) in (int,float)])
print(result,eval(result),sep="+")

split

str1.split(str2)---将字符串1中所有的字符串2作为切割点对字符串1进行切割
返回包含多个字符串的列表

str1="abc123sadvs123fregs123awvwe"
result=str1.split("123")
print(result)
返回结果为:
['abc', 'sadvs', 'fregs', 'awvwe']

str1.split(str2,n)---在字串中以前n个字符作为切割点对字符串1进行切割
str1="abc123sadvs123fregs123awvwe"
print(str1.split("123",2))
返回结果为:
['abc', 'sadvs', 'fregs', 'awvwe']

注意:如果切割点在字符串开头,结尾,或者连续出现多个切割点,都会返回空字符串

rep;ace

str1.replace(str2,str3)---将str1中的所有str2都替换成str3
str1='how are you? Im fine, Thank you!'
result=str1.replace("you","me")
printz(result)

str1.replace(str2,str3,n)----将字符串1中前n个字符串2替换成字符串3

strip

str1.strip()-----去掉字符串前后的空白字符
str1="   \t \n good good study \n "
print(str1.strip())

count

str1.count(str2)------统计str1中str2出现的次数

maketrans, translate

maketrans(str2,str2)--------通过str1和str2创建替换对应关系表,len(str1)=len(str2)
str. translate(对应关系表)-------按照对应关系表将字符串中的字符进行替换
table=str.maketrans("abc","123") # a-1  b-2 c-3
str1="gvgwbsdvhwaqwfcasc"
result=str1.translate(table)
print(result)
打印结果为:
gvgw2sdvhw1qwf31s3

center ljust rjust,zfill

str.center(长度,str)--------将指定字符串变成指定长度,不够的用指定字符填充,原字符串放中间
str.ljust(长度,str)--------将指定字符串变成指定长度,不够的用指定字符填充,原字符串放左边
str.rjust(长度,str)--------将指定字符串变成指定长度,不够的用指定字符填充,原字符串放右边
str.zfill(长度)=str.rjust(长度,"0")
str1="abc"
print(str1.center(7,'x'))

find

str1.find(str2)-------获取字符串2在字符串1中第一次出现的位置
str1.index(str2)--------获取字符串2在字符串1中第一次出现的位置
两者区别在于在找不到str2时find不报错
str1.rfind(str2)-------从右开始获取字符串2在字符串1中第一次出现的位置
str1.rindex(str2)-------从右开始获取字符串2在字符串1中第一次出现的位置

isdigit isnumeric

str1.isdigit----判断是否纯数字字符串
str1.isdigit----判断是否纯数字意义字符串
str1="123"
str2="123一"
print(str1.isdigit())   # Flase
print(str2.isnumeric()) # True

常用格式占位符

%s -------- 字符串占位符,可以对应任何类型数据
%d -------- 整数占位符,可以对应任何数字
%f -------- 浮点数占位符,可以对应任何数字

四,转义字符

\t------水平制表符
\n------换行
\'------表示一个普通单引号
\"------表示一个普通双引号
\\------表示一个普通反斜杠



字符串作业:

  1. 输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7…位上的字符)

例如: 输入’abcd1234 ’ 输出’bd24’

str1='abcd1234 '  
print(str1[::2])
  1. 输入用户名,判断用户名是否合法(用户名长度6~10位)
str1=input("请输入用户名:")
if 6<=len(str1)<=10:
    print("合法")
else:
    print("不合法")
  1. 输入用户名,判断用户名是否合法(用户名中只能由数字和字母组成)

例如: ‘abc’ — 合法 ‘123’ — 合法 ‘abc123a’ — 合法

suername=input("请输入用户名:")
for i in suername:
    if not ("0"<=i<="9" or "a"<=i<="z" or "A"<=i<="Z"):
        print("不合法")
        break
else:
    print("合法")
  1. 输入用户名,判断用户名是否合法(用户名必须包含且只能包含数字和字母,并且第一个字符必须是大写字母)

例如: ‘abc’ — 不合法 ‘Mabc’ — 不合法 ‘123’ — 不合法 ‘abc123’ — 不合法 ‘Abc123ahs’ — 合法

name=input("请输入用户名;")
if "A"<=name[0]<="Z":
    for i in range(1,len(name)+1):
        if "0"<=name[i]<="9" or "a"<=name[i]<="z" or "A"<=name[i]<="Z":
            print("用户名合法")
        else:
            print("用户名不合法")
else:
    print("不合法")

  1. 输入一个字符串,将字符串中所有的数字字符取出来产生一个新的字符串

例如:输入**‘abc1shj23kls99+2kkk’** 输出:‘123992’

a=""
name='abc1shj23kls99+2kkk'
for i in name:
    if "0"<=i<="9":
        a+=i
print(a)
  1. 输入一个字符串,将字符串中所有的小写字母变成对应的大写字母输出 (用upper方法和自己写算法两种方式实现)

例如: 输入**‘a2h2klm12+’ ** 输出 ‘A2H2KLM12+’

a="a2h2klm12+"
print(a.upper())
  1. 输入一个小于1000的数字,产生对应的学号

例如: 输入**‘23’,输出’py1901023’** 输入**‘9’, 输出’py1901009’** 输入**‘123’,输出’py1901123’**

num="请输入1000以内的数字:"
result="'py1901"+"0"*(3-len(num))+num
print(result)
  1. 输入一个字符串,统计字符串中非数字字母的字符的个数

例如: 输入**‘anc2+93-sj胡说’** 输出:4 输入**‘===’** 输出:3

a=input("请输入字符串:")
count=0
for i in a:
    if not ("0"<=i<="9" or "a"<=i<="z" or "A"<=i<="Z"):
        count+=1
print(count)
  1. 输入字符串,将字符串的开头和结尾变成’+',产生一个新的字符串

例如: 输入字符串**‘abc123’, 输出’+bc12+'**

str1=input("请输入字符串:")
result="+"+str1[1:-1]+"+"
print(result)
  1. 输入字符串,获取字符串的中间字符

例如: 输入**‘abc1234’** 输出:‘1’ 输入**‘abc123’** 输出**‘c1’**

str1=input("请输入字符串:")
if len(str1)%2!=0:
    print(str1[len(str1)//2])
elif str1==" ":
    print(" ")
else:
    print(str1[(len(str1)-1)//2],str1[(len(str1))//2])
  1. 写程序实现字符串函数find/index的功能(获取字符串1中字符串2第一次出现的位置)

例如: 字符串1为:how are you? Im fine, Thank you! , 字符串2为:you, 打印8

str1="how are you? Im fine, Thank you!"
str2="you"
len1=len(str1)
len2=len(str2)
for index in range(len1-len2+1):
    if str1[index:index+len2]==str2:
        print(index)
        break
else:
    print(-1)
  1. 获取两个字符串中公共的字符

例如: 字符串1为:abc123, 字符串2为: huak3 , 打印:公共字符有:a3

str1="abc123"
str2="huak3"
str3=[]
for i in str2:
    if i in str1:
        str3.append(i)
print(str(str3))


  1. 编写一个程序,交换指定字典的key和value。

      例如:dict1={'a':1, 'b':2, 'c':3}  -->  dict1={1:'a', 2:'b', 3:'c'} 
    
dict1={'a':1, 'b':2, 'c':3}
result={dict1[i]:i for i in dict1}
print(result)
  1. 编写一个程序,提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串
   例如: 传入'12a&bc12d-+'   -->  'abcd'  
a=input("请输入字符串:")
b=""
for i in a:
    if "a"<=i<="z" or "A"<=i<="Z":
        b+=i
print(b)
  1. 写一个自己的capitalize函数,能够将指定字符串的首字母变成大写字母
  例如: 'abc' -> 'Abc'   '12asd'  --> '12asd'
a=input("请输入字符串:")
b=a[0].upper()+a[1:len(a)+1]
print(b)
  1. 写程序实现endswith的功能,判断一个字符串是否以指定的字符串结束
   例如: 字符串1:'abc231ab' 字符串2:'ab' 函数结果为: True
        字符串1:'abc231ab' 字符串2:'ab1' 函数结果为: False
a=input("请输入字符串:")
b=input("请输入判断字符串:")
len2=len(b)
if a[-1:-(len(b)+1):-1]==b:
    print("True")
else:
    print("Flase")
  1. 写程序实现isdigit的功能,判断一个字符串是否是纯数字字符串
   例如: '1234921'  结果: True
         '23函数'   结果: False
         'a2390'    结果: False
str1=input("请输入字符串:")
for i in str1:
    if not "0"<=i<="9":
        print("False")
        break
else:
    print("True")
  1. 写程序实现upper的功能,将一个字符串中所有的小写字母变成大写字母
    例如: 'abH23好rp1'   结果: 'ABH23好RP1'   
str1='abH23好rp1'
str2=""
for i in str1:
    if "a"<=i<="z":
        new_i=chr(ord(i)-32)
        str2+=new_i
    else:
        str2+=i
print(str2)
  1. 写程序获取指定序列中元素的最大值。如果序列是字典,取字典值的最大值
    例如: 序列:[-7, -12, -1, -9]    结果: -1   
         序列:'abcdpzasdz'    结果: 'z'  
         序列:{'小明':90, '张三': 76, '路飞':30, '小花': 98}   结果: 98
暂无寻到渐变方法
  1. 写程序实现replace函数的功能,将指定字符串中指定的旧字符串转换成指定的新字符串
    例如: 原字符串: 'how are you? and you?'   旧字符串: 'you'  新字符串:'me'  结果: 'how are me? and me?'
a='how are you? and you?'
b="you"
c="me"
for i in range(len(a)-2):
    if a[i:i+3]==b:
       a=a[0:i]+c+a[i+3:]
print(a)

函数:
def replace(str1:str,old:str,new:str):
    return new.join(str1.split(old))
方法二;
def replace(str1:str,old:str,new:str):
    new_str=""
    index=0
    len1=len(str1)
    len2=len(old)
    while True:
        if str1[index:index+len(2)]==old
            new_str+=new
            index+=len2
        else:
            new_str+=str1[index]
            index+=1
        if index>=len1:
            break
    return new_str
  1. 写程序实现split的功能,将字符串中指定子串作为切割点对字符串进行切割
例如:原字符串: 'how are you? and you?'   切割点: 'you'  结果: ['how are ', '? and ', '?']
str1='how are you? and you?'
a=input("请输入切割点:")
for i in range(len(str1)-2):
    if str1[i:i+len(a)]==a:
       str1=str1[0:i]+str1[i+len(a):]
print(str1)
  1. 用思维导图总结四大容器:列表、字典、元组、集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值