Python学习笔记(十一):字符串

一、认识字符串

字符串是Python中最常用的数据类型,我们一般使用引号拉来创建字符串。创建字符串很简单,只要为变量分配一个值即可。

# 单引号表示字符串
a = '你好,单引号'
#单引号换行
e = 'hello' \
    'world'
#单引号的特殊情况 可以用转义字符解决
f = 'It\'s a cat'


# 双引号表示字符串
b = "你好,双引号"


# 三引号表示字符串
c = """你好,三引号"""
#三引号的特殊用法 可以换行
d = """hello
world"""


print(a, b, c, d, e)
print(type(a), type(b), type(c))

二、字符串输出

  • %s输出字符串
str1 = "I am a toy"
print("the truth is, %s, that people enjoy, still all of the tricks don't work anymore, then they are bored of me" % str1)
  • f格式化输出
str1 = "I am a toy"
print(f"the truth is, {str1}, that people enjoy, still all of the tricks don't work anymore, then they are bored of me")

三、字符串输入

在Python中,使用input()接收用户输入。

password = input("请输入密码:")
print(f"您输入的密码是:{password}")

四、下标

下标又叫索引,就是编号,作用是通过下标迅速找到对应的数据。

注意:下标都是从0开始的。

str1 = "bjyxszd"
print(str1)
print(str1[0])
print(str1[1])
print(str1[2])
print(str1[3])
print(str1[4])
print(str1[5])
print(str1[6])

五、切片

切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。

语法:序列名[ 开始位置下标:结束位置下标:步长 ]

注意:

  • 截取的数据不包含结束位置下标对应的数据,正负整数均可(左闭右开)。
  • 步长是选取间隔,正负整数均可,默认步长为1。
str1 = "bjyxszd"
print(str1[4:7])      #szd
print(str1[0:7:2])    #bysd
print(str1[:7:3])     #bxd
print(str1[:7])       #bjyxszd 不写开始默认从下标0开始
print(str1[4:])       #szd 不写结束默认选取到最后
print(str1[:])        #bjyxszd 开始和结束都不写表示选取所有
print(str1[::-1])     #dzsxyjb 步长是负数表示从后往前倒序选取
print(str1[-5:-1])    #xsz 下标-1表示最后一个数据,依次向前类推
print(str1[-5:-1:-1]) #不能选取,因为-5到-1是从左往右选取,而步长-1是从右往左选取,方向冲突
print(str1[-1:-5:-1]) #dzsx 可以选取,保证选取方向和步长方向一致的话就可以正常选取

六、字符串的常用操作方法

字符串的常用操作方法有查找、修改和判断三大类。

6.1 查找

所谓字符串查找方法即是查找子串在字符串中的位置或出现次数。

  • find():检测某个子串是否在字符串中,如果在返回这个子串开始的位置下标,否则返回-1。

语法:字符串序列.find(子串,开始位置下标,结束位置下标) PS:开始和结束下标可以省略,表示在整个字符串中查找。

#find()测试
str1 = "The truth is, I am a toy, that people enjoy, till all of the tricks dont't work anymore, then they are bored of me"
print(str1)
print(str1.find("a")) #16
print(str1.find("a",17)) #19 可以不写结束位置
print(str1.find("z")) #-1 没有查找到返回-1
  • index():检测某个子串是否包含在这个字符串中,如果在返回这个子串的开始的位置下标,否则报异常。

语法:字符串序列.index(子串,开始位置下标,结束位置下标) PS:开始和结束下标可以省略,表示在整个字符串中查找。

#index()测试
str1 = "The truth is, I am a toy, that people enjoy, till all of the tricks dont't work anymore, then they are bored of me"
print(str1)
print(str1.index("a")) #16
print(str1.index("a",17)) #19 可以不写结束位置
#print(str1.index("z")) #如果index查找子串不存在报错
  • count():返回某个子串在字符串中的出现次数。

语法:字符串序列.count(子串,开始位置下标,结束位置下标)

#count()测试
str1 = "The truth is, I am a toy, that people enjoy, till all of the tricks dont't work anymore, then they are bored of me"
print(str1)
print(str1.count("a")) #统计子串出现次数
print(str1.count("a",15,30)) #在当前这个区间的出现次数
print(str1.count("z")) #如果不存在则返回0
  • rfind():和find()功能相同,但是查找方向相反,从右侧开始。
  • rindex():和index()功能相同,但是查找方向相反,从右侧开始。
str1 = "The truth is, I am a toy, that people enjoy, till all of the tricks dont't work anymore, then they are bored of me"
print(str1)
#rfind()测试
print(str1.rfind("a")) #99
print(str1.rfind("z")) #-1

#rindex()测试
print(str1.rindex("a")) #99
#print(str1.rindex("z")) #报错

6.2 修改

所谓字符串修改,指的就是通过函数的形式修改字符串中的数据。

  • replace():替换

语法:字符串序列.replace(旧子串,新子串,替换次数)

注意:替换次数如果超出子串出现次数,则替换次数为该子串的出现次数。

old_str = "The truth is, I am a toy, that people enjoy, till all of the tricks dont't work anymore, then they are bored of me"
# 把原来句子中的","替换成"*",说明replace函数有返回值,返回值是修改后的字符串。调用了replace函数后,发现原有字符串的数据并没有被修改,
# 修改后的数据是replace函数的返回值,进而说明字符串是不可变数据类型。
# new_str = old_str.replace(",", "*")
# new_str = old_str.replace(",", "*", 1)
new_str = old_str.replace(",", "*", 100) #替换次数如果超出子串出现次数,则替换次数为该子串的出现次数。

print(new_str)
print(old_str)

PS:数据按照是否能直接修改分为可变类型和不可变类型两种,字符串类型的数据在修改的时候不能改变原有字符串,属于不能直接修改数据的类型即是不可变类型。 

  • split():按照指定字符分割字符串

语法:字符串序列.split(分割字符,num)

注意:num是分割字符出现的次数,即将来返回数据个数为num+1个。

# split() 分割,返回一个列表,会丢失分割字符
old_str = "The truth is, I am a toy, that people enjoy, till all of the tricks dont't work anymore, then they are bored of me"
# list1 = old_str.split(",")
list1  = old_str.split(",", 1) #分割字符出现一次,所以返回有两个元素的列表
print(list1)
  • join():用一个字符或子串合并字符串,即是多个字符串合并成一个新的字符串。

语法:连接字符或子串.join(多字符串组成的序列)

# join() 合并列表里面的字符串数据成为一个大字符串
mylist = ["WW", "YY", "BB"]
mystr = "$".join(mylist) #表示使用$字符将各个字符串连接起来
print(mystr)
  • capitalize():将字符串的第一个字符转换成大写。

注意:capitalize()函数转换后,只字符串第一个字符大写,其余字符均小写。

  • title():将字符串每个单词首字母转换成大写。
  • lower():将字符串大写转小写。
  • upper():将字符串中小写转大写。
  • Lstrip():删除字符串左侧字符。
  • rstrip():删除字符串右侧字符。
  • strip():删除字符串两侧字符。
  • ljust():返回一个原字符串左对齐,并使用指定字符(默认空格)填充至对应长度的新字符串。

语法:字符串序列.ljust(长度,填充字符)

# ljust()测试
mystr = "hello"
newstr = mystr.ljust(10,"*")
print(newstr) #hello*****
  • rjust():返回一个原字符串右对齐,并使用指定字符(默认空格)填充至对应长度的新字符串,语法和ljust相同。
  • center():返回一个原字符串居中对齐,并使用指定字符(默认空格)填充至对应长度的新字符串,语法和ljust相同。

6.3 判断

所谓判断即是判断真假,返回的结果是布尔型数据类型:True或False。

  • startwith():检查字符串是否以指定子串开头,是则返回True,否则返回False。如果设置开始和结束位置下标,则在范围内进行检查。

语法:字符串序列.startwith(子串,开始位置下标,结束位置下标)

mystr = "I want you, I'll color me blue, anything it takes to make you stay."
print(mystr.startswith("I"))  # True
print(mystr.startswith("i"))  # False
  • endwith():检查字符串是否以指定子串结尾,是则返回True,否则返回False。如果设置开始和结束位置下标,则在范围内进行检查。语法和startwith()相同,此处不做举例。
  • isalpha():如果字符串至少有一个字符并且所有字符都是字母返回True,否则返回False。
  • isdigit():如果字符串只包含数字则返回True,否则返回False。
  • isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False。
  • isspace():如果字符串只包含空白则返回True,否则返回False。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值