python基础学习08_字符串及其常用操作方法

一、字符串

二、字符串实操

1、字符串定义

"""
字符串
1、字符串是python中最常用的数据类型,是不可变类型
2、一般用引号来创建字符串,可用单引号、双引号、三引号
  (三引号形式的字符串支持换行,即多行字符串)
"""

# 单引号
str1 = 'hello'
str2 = 'I\'m TOM'  # 字段串中间出现单引号,要用反斜杠转义
print(f'单引号:{str1}, {str2}')
print(type(str1), type(str2))

# 双引号
str1 = "hello wold"
str2 = "I'm Tina"
str3 = "I'm " \
       "Tina"  # 代码中换行,输出不换行
print(f'双引号:{str1}, {str2}, {str3}')
print(type(str1), type(str2), type(str3))

# 三引号(支持换行输出)
str1 = ''' I\'m Jack,
                     nice to meet you!
       '''
str2 = """ I'm Rose,
                     nice to meet you,too!
       """
print(f'三引号:{str1}, {str2}')
print(type(str1), type(str2))

out:

单引号:hello, I'm TOM
<class 'str'> <class 'str'>
双引号:hello wold, I'm Tina, I'm Tina
<class 'str'> <class 'str'> <class 'str'>
三引号: I'm Jack,
                     nice to meet you!
       ,  I'm Rose,
                     nice to meet you,too!

2、字符串下标

又称索引,通过下标能快速找到相应的存储空间(python中下标从0开始)

# 下标
# 语法: 字符串[下标]
str1 = "Hello,Tina"
print(str1[0])  # H
print(str1[6])  # T
print(str1[7])  # i

3、字符串切片

切片是指对操作的序列截取其中⼀部分的操作

'''
# 切片
1、语法:序列[开始位置下标:结束位置下标:步⻓]
2、注意: (1) 步长为选取间隔,正负整数均可,不填则默认步长为1
        (2) 左闭右开(不包含结束位置下标的数据),正负整数均可
'''
str1 = '0123456789'
print(str1[0: 4: 1])  # 0123
print(str1[0: 4: 2])  # 02  选取间隔为2
print(str1[-2: -6: -1])  # 8765 倒数第2个到倒数第6个(不含第6个数)
print(str1[-2: -6: 1])  # 无输出,选取方向与步长方向不一致,则无法输出相应数据(从-2到-6是从右往左,步长1代表从左往右选取,方向相反)

4、字符串常用操作方法

4.1、查找

查找方法描述语法
find():检测某个子串是否包含在这个字符串中,如果在,返回子串开始位置下标,否则返回-1。字符串序列.find(子串, 开始位置下标, 结束位置下标)
index():检测某个子串是否包含在这个字符串中,如果在,返回子串开始位置下标,否则抛出异常。字符串序列.index(子串, 开始位置下标, 结束位置下标)
rfind():功能同find,但是查找方向是从右边开始。字符串序列.rfind(子串, 开始位置下标, 结束位置下标)
rindex():功能同index,但是查找方向是从右边开始。字符串序列.rindex(子串, 开始位置下标, 结束位置下标)
count():计算子串在字符串中出现的总次数。字符串序列.count(⼦串, 开始位置下标, 结束位置下标)

(1)查找子串在字符串中的位置

  • find()
# find()
# 语法:字符串序列.find(子串,开始位置下标,结束位置下标)
str1 = 'I like apple and orange and strawberry and banana.'

# 若字符串序列中有多个目标子串,返回第一个子串的开始下标
print(str1.find('and'))  # 13

# 若字符串序列中未查询到目标子串,返回-1
print(str1.find('and', 16, 20))  # -1 --范围内没找到

print(str1.find('and', 16, 30))  # 24
print(str1.find('and', 30))  # 39

# 下标不支持负整数
print(str1.find('and', -1, -30))  # -1
  • rfind()
# rfind()
print(str1.rfind('and'))  # 39
#  从右边开始16位到24位
print(str1.rfind('and', 16, 30))  # 24
  • index()
# index()
# 语法:字符串序列.index(子串,开始位置下标,结束位置下标)
str1 = 'I like apple and orange and strawberry and banana.'
print(str1.index('and'))  # 13
print(str1.index('and', 20, 30))  # 24

# 找不到数据抛出异常
print(str1.index('and', 16, 20))  # 异常
  • rindex()
# rindex()
print(str1.rindex('and'))  # 39

(2)查找子串在字符串中的个数

  • count()
# count()
# 字符串序列.count(子串,开始位置下标,结束位置下标)
str1 = 'I like apple and orange and strawberry and banana.'

print(str1.count('and'))  # 3
print(str1.count('ands'))  # 0
print(str1.count('and', 10, 30))  # 2

4.2、修改

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

(1) 替换、分割、合并

  • replace():替换
'''
replace()
语法:字符串序列.replace(旧子串,新子串,替换次数)
如果不填写替换次数,默认旧子串无论在字符串中出现几次,都全部替换
''' 

str1 = 'I like apple and orange and strawberry and banana.'
str2 = str1.replace('and', 'he')
print(str2)  

# 指定替换次数
str2 = str1.replace('and', 'he', 1)
print(str2)  

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

  • split():按照指定字符分割字符串
''''
split()
语法:字符串序列.split(分割字符,num)
num表分割字符出现的次数
'''
str1 = 'I like apple and orange and strawberry and banana.'
print(str1.split('and'))
print(str1.split('and', 2))

注意:如果分割字符是原有字符串中的⼦串,分割后则丢失该⼦串。

  • join():字符串合并
'''
# join()
# 语法:字符或⼦串.join(多字符串组成的序列)

# 字符或⼦串会插入到序列当中每个元素的后面,组成一个新的字符串
'''
str1 = '..?'
str2 = 'abcde'
str3 = str1.join(str2)
print(str3)  # a..?b..?c..?d..?e

(2)大小写转换

  • capitalize():仅字符串首字母大写
# capitalize()
str1 = 'i like apple and orange and strawberry and banana.'
print(str1.capitalize()) 

out:

I like apple and orange and strawberry and banana.
  • title():字符串中每个单词首字母大写
 # title()
print(str1.title()) 

out:

I Like Apple And Orange And Strawberry And Banana.
  • upper():字符串中小写字母全部转换成大写
# upper()
print(str1.upper()) 

out:

I LIKE APPLE AND ORANGE AND STRAWBERRY AND BANANA.
  • lower():字符串中大写字母全部转换成小写
# lower()
str1 = 'ABCD'
print(str1.lower()) 

out:

abcd

(3) 去除空白符

方法描述
lstrip()删除字符串左侧空白
rstrip()删除字符串右侧空白
stripe()删除字符串两侧空白
str1 = '   hello   '
# lstripe()
print(str1.lstrip())

# rstripe()
print(str1.rstrip())

# stripe()
print(str1.strip())

out:

hello   
   hello
hello

(4) 对齐

方法描述
ljust()字符串左对齐
rjust()字符串右对齐
center()居中(但并非绝对居中)

数据按指定方向对齐,使用指定字符(默认空格)填充至对应长度的新字符串。

str1 = 'hello'

# ljust()
# 语法:字符串序列.ljust(长度,填充字符)
# 填充字符:不填写则默认空格
print(str1.ljust(10, '.'))

# rjust()
# 语法:字符串序列.rjust(长度,填充字符)
# 填充字符:不填写则默认空格
print(str1.rjust(10, '.'))  # .....hello

# center()
# 语法:字符串序列.center(长度,填充字符)
# 填充字符:不填写则默认空格
print(str1.center(10, '.'))  # ..hello...  --可以看出只是相对居中

out:

hello.....
.....hello
..hello...

4.3、判断

方法描述
startswith判断字符串是否是以子串开头,是则返回true,否则返回false;如果设置开始和结束位置下标,则在指定范围内检查
endswith判断字符串是否是以子串结尾,是则返回true,否则返回false;如果设置开始和结束位置下标,则在指定范围内检查
isalpha判断非空字符串是否全部都是由–字母–组成,是则返回true,否则返回false
isdight判断非空字符串是否全部都是由–数字–组成,是则返回true,否则返回false
isalnum判断非空字符串是否仅由字母、数字其中一种或两种组合组成,是则返回true,否则返回false
ispace判断非空字符串是否仅由空白字符组成,是则返回true,否则返回false
  • startswith():字符串是否以指定子串开头
# 字符串.startswith(子串,开始位置下标,结束位置下标)
str1 = 'Hello,world'
print(str1.startswith('He'))  # True
print(str1.startswith('l', 2))  # True
  • endswith():字符串是否以指定子串结尾
# 字符串.endswith(子串,开始位置下标,结束位置下标)
str1 = 'Hello,world'
print(str1.endswith('rld'))  # True
  • isalpha():字符串是否全部由字母或者中文汉字组成
# isalpha()
print(str1.isalpha())  # False,有逗号
str2 = 'abcd'
print(str2.isalpha())  # True

# 中文亦可
my_str = '我们'
print(my_str.isalpha())  # True
  • isdight():字符串是否全部由数字组成
# isdight()
str1 = '12 345'
str2 = '12345'
print(str1.isdigit())  # False,有空白符
print(str2.isdigit())  # True
  • isalnum():字符串是否仅由字母、数字其中一种或两种组合组成
# isalnum()
str1 = 'abcd'
str2 = '12345'
str3 = 'a1'
print(str1.isalnum())  # True
print(str2.isalnum())  # True
print(str3.isalnum())  # True
  • isspace():字符串是否仅由空白字符组成
# isspace()
str1 = '12 345'
str2 = '     '
print(str1.isspace())  # False,有数字
print(str2.isspace())  # True
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值