3数据类型-字符串

1.初识字符串

  • 字符串 str
  • 字符串不可变类型(无法改变原字符串数据)
  • 字符串属于序列类型(有索引下标)
字符串特征
    ' '
    " "
    """ """
均为字符串

例如:

name1 = '张三'
print(type(name1)) # <class 'str'>

name2 = "张三"
print(type(name2)) # <class 'str'>

name3 = """张三"""
print(type(name3)) # <class 'str'>

2.字符串特定存在


""" """ # 在不用变量接收时,可以作为跨行注释
        # 同时也用于字符串跨行,不必使用拼接符或换行符

3.索引切片

  • 索引(下标)就是编号,就像超市中的存储柜编号,通过编号就能够找到相对应的存储空间(下标是从0开始)
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1eNmqU3e-1649773048684)(4060915357B841F8B608C9107840B272)]

  • 切片:切片是指对操作对象截取其中的一部分,字符串、列表元组都支持切片操作。(切片属于半开半闭集合,即左包又不包,左边的下标包括在内,而右边的下标只能取到该下标的前一个数据)

  • 左闭右开

在这里插入图片描述

如上所叙述:切片左闭右开是因为切是在指定下标位置前切了一刀,导致了切出来后,不包含尾位这个数据

str1 = 'abcdefgh'

# 通过索引取值
print(str1[1])  # b

print(str1[-2])  # g
print(str1[-1])  # h

# ------ [起始位置:结束位置:步长]
# 切片取值
print(str1[2:6])  # cdef

# 步长 :一步多长,默认步长为1
print(str1[::2])  # aceg

print(str1[1::2])  # bdfh
print(str1[1:4:2])  # bd

  • 步长为负数时
str1 = 'abcdefgh'

str1 = 'abcdefgh'

print(str1[::-1])  # hgfedcba
print(str1[::-2])  # hfdb

print(str1[-1:-5:-1])  # hgfe

# 注意不要正向与反向操作冲突了

在这里插入图片描述

4.字符串操作方法

一个下标对应一个数据(元素)

a.查

  • count:查找指定元素在字符串中出现的次数,可指定范围
# count:查找指定元素在字符串中出现的次数
str1 = 'addfbcvfd'
print(str1.count('d'))  # 3
  • index: 查找指定元素第一次出现的位置下标 - 找不到报错 【可指定范围】
# index: 查找指定元素第一次出现的位置下标 - 找不到报错
str2 = 'qwert帅哈yuil哈哈'
print(str2.index('哈'))  # 6
print(str2.index('放'))  # ValueError: substring not found(值错误:未找到子字符串)
  • find: 查找指定元素第一次出现的位置下标 - 找不到返回 (-1) 【可指定范围】
# find: 查找指定元素第一次出现的位置下标 - 找不到返回 (-1)
str2 = 'qwert帅哈yuil哈哈'
print(str2.find('哈'))  # 6
print(str2.find('放'))  # -1
  • isdigit: 判断字符串是否由纯数字构成
# isdigit: 判断字符串是否由纯数字构成
str3 = '12345'
str4 = '12345hasd'
str5 = 'drthasd'
print(str3.isdigit())  # True
print(str4.isdigit())  # False
print(str5.isdigit())  # False
  • isalpha: 判断字符串是否由纯字符构成
# isalpha: 判断字符串是否由纯字符构成
str3 = '12345'
str4 = '12345hasd'
str5 = 'drthasd'
print(str3.isalpha())  # False
print(str4.isalpha())  # False
print(str5.isalpha())  # True
  • endswith: 判断字符串结束位置字符是否是指定字符
# endswith: 判断字符串结束位置字符是否是指定字符
str6 = 'axiba'
print(str6.endswith('ba'))  # True
print(str6.endswith('aa'))  # False
  • startswith: 判断字符串开始位置字符是否是指定字符
# startswith: 判断字符串开始位置字符是否是指定字符
str6 = 'axiba'
print(str6.startswith('ax'))  # True
print(str6.endswith('aa'))  # False
  • islower: 判断字符串中(英文字符)是否为纯小写
# islower: 判断字符串中(英文字符)是否为纯小写
str7 = 'qqwee哈哈'
str8 = 'qQwee哈哈'
print(str7.islower())  # True
print(str8.islower())  # False

  • isupper: 判断字符串中(英文字符)是否为纯大写
# isupper: 判断字符串中(英文字符)是否为纯大写
str7 = 'qqwee哈哈'
str8 = 'qQwee哈哈'
str9 = 'QWERT哈哈'
print(str7.isupper())  # False
print(str8.isupper())  # False
print(str9.isupper())  # True

注意字符串的不可变性质:无法改变原数据
***

  • split: 切割字符串
# split: 切割字符串
str10 = 'hello world'
data_1 = str10.split('o')
print(data_1)  # ['hell', ' w', 'rld']

# 注意: 默认去去空格
str11 = 'ha     sd     '
data_2 = str11.split()
print(data_2)  # ['ha', 'sd'] 
  • strip:去除字符串开头与结尾的空格
# strip:去除字符串开头与结尾的空格
str12 = ' sdfg  '
data_3 = str12.strip()
print(data_3)  # sdfg

# lstrip:去除左边空格
str13 = '  shuai'
print(len(str13))  # 原字符串长度:7
data_4 = str13.lstrip()
print(len(data_4))  # 改变后字符串长度: 5

# rstrip:去除右边空格
str14 = 'shushu '
print(len(str14))  # 改变前字符串长度: 7
data_5 = str14.rstrip()
print(len(data_5))  # 改变后字符串长度: 6
  • upper: 小写改大写
# upper: 小写改大写
str15 = 'qrtyQWE帅123'
data_6 = str15.upper()
print(data_6)  # QRTYQWE帅123
  • lower: 大写改小写
# lower: 大写改小写
str16 = 'qrtyQWE帅123'
data_7 = str16.lower()
print(data_7)  # qrtyqwe帅123
  • capitalize: 字符串首字母大写
# capitalize: 字符串首字母大写
str17 = 'hello 帅hi english'
data_8 = str17.capitalize()
print(data_8)  # Hello 帅hi english
  • title: 字符串里面单词首字母大写
# title: 字符串里面单词首字母大写
str18 = 'hello 帅hi english'
data_9 = str18.title()
print(data_9)  # Hello 帅Hi English

  • replace:替换
# 默认替换所有
str19 = 'shuju真的很帅哈!学习的快乐 哈哈哈哈'
data_10 = str19.replace('哈', '-')  # shuju真的很帅-!学习的快乐 ----
print(data_10)


# 指定替换次数
str20 = 'shuju真的很帅哈!学习的快乐 哈哈哈哈'
data_11 = str20.replace('哈', '-', 2)  # shuju真的很帅-!学习的快乐 -哈哈哈
print(data_11)



# 达到删除效果 ---- 删除空格
str21 = 'sh 真的很   帅哈!学习的  快乐     '
data_12 = str21.replace(' ', '')
print(data_12)  # sh真的很帅哈!学习的快乐

  • replace(old, new [, count])
    • old:被替换的元素
    • new:替换成什么
    • count:可传可不传,可指定替换次数;默认所有

5.字符串拼接

拼接符: +

str_1 = '你很'
str_2 = '帅'
splicing = str_1 + str_2
print(splicing)  # 你很帅

占位符:%s

str_3 = '18'
# 有几个占位符就得传几个字符串进去
placeholder = '%s今年%s岁' % ('小明', str_3)
print(placeholder)  # 小明今年18岁

join方法

str_4 = '帅'
str_5 = '真的'
str_6 = '他'

join_merge = '-'.join([str_6, str_5, str_4])
print(join_merge)  # 他-真的-帅


# join_merge = ''.join([str_6, str_5, str_4])
# print(join_merge)  # 他真的帅

format

str_4 = '帅吗?'
str_5 = '真的'
str_6 = '他'

# 默认位置  1对1
format_merge_1 = '{}{}很{}'.format(str_6, str_5, str_4)
print(format_merge_1)  # 他真的很帅吗?

# 根据下标位置                        0       1      2
format_merge_2 = '{0}{2}很{1}'.format(str_6, str_4, str_5)
print(format_merge_2)  # 他真的很帅吗?

# 重新命名,内部指定
format_merge_3 = '{n1}{n3}很{n2}'.format(n1=str_6, n2=str_4, n3=str_5)
print(format_merge_3)  # 他真的很帅吗?

# python3优化的: 通过f申明,配合{}进行直接指定插入
format_merge_4 = f'{str_6}{str_4}{str_5}'
print(format_merge_4)  # 他真的很帅吗?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值