Python字符串

# 使用引号引起来的就是字符串
my_str= 'hello'
mY_str1 = "hello"
print(type(my_str))

# 字符串本身包含单引号时,在定义中不能使用单引号
# 字符串本身包含双引号时,在定义中不能使用双引号
my_str4 = "I'm 富豪"
print(type(my_str4))
# 使用\转义字符,将字符穿本身的引号进行转义\'---->'\"----->"
my_str5 = 'I\'m 富豪'
print(type(my_str5))

#b站看hm课程学的,此笔记只作为我不懂得知识点的补充


字符串下标

  • 下标就是字符在字符串中的位置编号,这个编号就是下标
  • 这个变好从左到右进行编号的,从0开始的
  • python支持负数,从右到左开始编号,从-1开始的
  • 下标的作用:可以使用下标获取字符串中某个位置的字符
  • 字符号[下标] 获取制定位置字符
# 下标就是字符在字符串中的位置编号,这个编号就是下标
# 这个变好从左到右进行编号的,从0开始的
# python支持负数,从右到左开始编号,从-1开始的
# 下标的作用:可以使用下标获取字符串中某个位置的字符

str1 = 'guzhousuoliweng1'

#打印字符串中最开始位置的字符
print(str1[0])
#打印字符串中最后一个位置的字符
print(str1[-1])
#打印倒数第二个字符
print(str1[-2])
#打印下标为2的
print(str1[2])

#获取字符串中的个数/获取字符串的长度
#使用关键字len(字符串)
num = len(str1)
print(num)
#长度-1的下标位置是最后一个字符
print(str1[num-1]) #最后一个字符,倒数第一个
#还是最后一个字符,倒数第一个
print(str1[len(str1)-1])

切片

  • 切片:可以获取字符串中多个字符(多个字符的下标是有规律的,等差数列)
  • 语法:
    字符串[开始位置:结束:步长]
  • 1.start是开始位置的下标
  • 2.end是结束位置的下标(注意,不能渠道这个位置的字符)
  • 3.step步长,等差数列的差值,所取的相邻字符下标之间的差值,默认是1,可以不写
  • 开区间,取不到结束
  • 步长默认为1
# 切片会得到一个字符串,即可以获取字符串中的多个字符
str = 'abcdefe'
#获取abc字符,如果步长是1可以不写,最后一个冒号也可以不写
str1 = str[0:3]
print(str1)#abc
#如果开始位置为0也可以不写,但是冒号必有,没有冒号就变成下标了

#2.获取efg字符
str2 = str[4:7]
print(str2)#efe
#2.1如果最后一个字符也要取的话,可以不写,但是必须有冒号
print(str[4:])#efe
#2.2 如果开始和结束都不写,获取全部内容,但是冒号必须要有
print(str[:])#abcdefe
#3.获取a c e,步长为2
print(str[::2])#acee

#特殊应用,步长为负数,开始和结束不写,意思全变,一般不用管,只有一种场景
#反转字符串 字符串[::-1]
print(str[::-1])#efedcba

字符串查找

  • 用法
    字符串.find(sub_str, start, end)
    作用:在字符串中查找是否存在sub_str这样的字符串
  • sub_str:要查找的小的字符串
    start开始位置盲从那个下标位置开始查找,一般不写,默认为0
    end结束位置,查找到那个下标结束,不写默认是len()
  • 返回:如果在字符串中找到了sub_str,返回sub_str,第一次出现的下标,字符串中第一字符在大字符串中的下标
  • 如果没找到,返回-1
str = "and hello word and nin min ming good luck"
# 在字符串中查找and,返回第一次出现的下标 0,从第一次出现的后一位开始找
num = str.find('and')
#查找第二个and,从第一次出现后一位开始找,空格也是一个字符
num1 = str.find('and',num+1)
#查找第三个and,从第二次出现后一位开始找,没有找到返回-1
num2 = str.find('and', num1+2)
print(num)
print(num1)
print(num2)

字符串替换方法replace

  • 替换不会改变原来的字符串,只会生成一个新的字符串
  • 字符串.replace(old_str,new_str,count)
  • 将字符串中的old_str替换为new_str
  • old_str:被替换的内容
  • new_str:替换为的内容
  • count替换的次数,一般不写,默认是全部替换
  • 返回:替换之后的完整的字符串,注意:原来的字符串没有发生改变
str1 = "good good luke"
 # 1.将str1中,所有的g改为G
new = str1.replace('g', 'G')
print(str1)
print('str1:', new)

#2.将str1中第一个good改为Good
new2 = str1.replace('good','GOOD',1)
print(new2)

#3.将str1中第二个good改为GOOD,分两步完成,特殊需求,平常不会遇到
new4 = str1.replace('good','GOOD')
new3 = new4.replace('GOOD','good',1)
print(new3)

字符串的拆分split

  • 字符串.split(sep, maxsplit)
  • 将字符串按照sep进行进行拆分
  • sep:默认是空白字符(空格,换行,\n,\t)
  • max_split:分割次数,一般不写,全部分割
  • 返回:讲一个字符串拆分为多个,存到列表中
  • 注意:如果sep不写想要指定分割次数,则需要按照如下方式使用
  • 字符串.split(maxsplit = n)
  • n是次数
str1 = "good good and study and my name and is xiaoshuang"
new = str1.split('and')
print(new)# ['good good ', ' study ', ' my name ', ' is xiaoshuang']

# 2.将str按照and字符进行拆分,拆分一次
new2 = str1.split('and', 1)
print(new2)#['good good ', ' study and my name and is xiaoshuang']

# 3.按照空白字符进行分割
new3 = str1.split()
print(new3)#['good', 'good', 'and', 'study', 'and', 'my', 'name', 'and', 'is', 'xiaoshuang']

#4.按照空白字符进行分割,只拆分一次
new4 = str1.split(maxsplit = 1)
print(new4)#['good', 'good and study and my name and is xiaoshuang']

字符串的链接join

  • 字符串.join(列表) #括号中的内容主要是列表,可以是其他容器
  • 作用:将字符穿插入到列表中每相邻的两个数据之间,组成一个新的字符串
  • 列表中的数据使用 逗号隔开
  • 注意点:列表中的数据必须都是字符串,否则会报错
list1 = ['good', 'and', 'study', 'and', 'xiaoshuang']

# 1.将列表中的字符串使用空格连起来
new = ' '.join(list1)
print(new) #good and study and xiaoshuang

# 2.将列表使用and链接
new2 = ' and '.join(list1)
print(new2) #good and and and study and and and xiaoshuang

练习

str1 = 'good luck my name my dafuhao'
#获取
new = str1.find("my")
print(new)
while new>0:
    new = str1.find('my',new + 1)
    print(new)
# 输出
# 10
# 18
# -1

# 查找出一段字符串中所有的字符,然后拼接到一起,并打印这个字符串的长度

str1 = 'good good studey and luke fufuf'

new = ' '.join(str1)
print(new)
print(len(new))

# 任意输入一串数字,判断当前数字是否是标准手机号,不考虑非数字情况

phone= input("请输入11位电话数字")
new = len(phone)
print(new)
if new == 11:
    print('输入正确')
else:
    print('输入数字非法')

字符串其他方法说明

字符串判断函数操作

startswith 判断字符串是以什么开始

  • 以什么进行开头,如果是,返回True,如果不是,返回False。

endswith判断字符串是以什么结束

  • 以什么进行结束,如果是,返回True,如果不是,返回False。

#练习题2

1.定义三个变量:name:曹操,age:28,sex:男,然后使用format格式化输出 “曹操的年龄是28,性别为男” 要求使用format的参数名的方式格式化

name = '曹操'
age = 28
sex = '男'
print(f"{name}的年龄是{age},性别为{sex}")

2.分别输入两个字符串,统计第二次输入的字符串在第一个字符串中出现的次数。 如果不存在,则提示不存在。

str1 = input('请输入字符串1')
str2 = input('请输入字符串2')
new = str1.count(str2)
if new > 0:
    print(f'出现次数:{new}')
else:
    print('字符不存在')

3.输入一个字符串,找出字符串中所有的字母和中文,然后拼接到一起,并打印这个字符串的长度。

str3 = input('输入一个字符串')
new3 = ''
for i in str3:
    if i.isdigit() or i.isalpha() :
        new3 += i

print(f'字符串是{new3},字符串长度是{len(new3)}')

4.输出字符串中指定字符出现的所有下标位置

str = 'good12good12gpod'
index = str.find('12')
while index >= 0:
    print(index)
    index = str.find('12',index+1)
    # 在当前位置的下一个位置开始查找

5.给定一个字符串 “Hello Hanna”,将其中的单词按照空格进行分割,并将每个单词的h替换为小写的h。

# 5.给定一个字符串 "Hello Hanna",将其中的单词按照空格进行分割,并将每个单词的h替换为小写的h。
str5 = "Hello Hanna"
new6 = str5.split()
print(new6)
new7 = [new6.replace('H', 'h') for new6 in new6]
print(new7)

#方法2
str9 = "Hello Hanna"
new9 = str9.replace('H', 'h').split(' ')
print(new9)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值