美文网首页
006-字符串

006-字符串

作者: 小D修行笔记 | 来源:发表于2022-07-26 05:34 被阅读0次

\color{red}{字符串的写法、字符串的输入与输出、下标、切片}
\color{red}{字符串查找(find、index、count、rfind、rindex)}
\color{red}{字符串修改(替换、分割、拼接、大小写转换、去除空格、对齐)}
\color{red}{字符串判断(指定开头、指定结尾、全部字符、全部数字、字符和数字组合、只包含空格)}

字符串

  • 字符串是Python中最常用的数据类型。一般使用引号来创建字符串
  • 使用单引号创建字符串'hello'
  • 使用双引号创建字符串"hello"
  • 使用六个单引号或六个双引号创建字符串'''hello'''"""hello"""
  • 使用六个引号创建的字符串,可以换行
  • 字符串的数据类型<class 'str'>

字符串的数据类型

a = 'hello world'
print(a)
print(type(a))

数据结果

hello world
<class 'str'>

六个引号包含的换行字符串

a = '''hello
world'''
print(a)
print(type(a))

输出结果

hello
world
<class 'str'>

单引双引号字符串换行

a = 'hello' \
    'world'
print(a)
print(type(a))

输出结果

helloworld
<class 'str'>
  • 单引号、双引号字符串换行需要使用'\',并且只是代码换行,输出效果跟不换行是一样的
  • 三引号写法,换行不需要添加额外的字符,并且输出也是换行的

字符串中带有引号的情况

字符串中带有单引号可以使用双引号或三引号包含,也可以使用转译字符\
a = "I'm Tom"
b = '''I'm Tom'''
c = """I'm Tom"""
d = 'I\'m Tom'
print(a)
print(b)
print(c)
print(d)

输出结果

I'm Tom
I'm Tom
I'm Tom
I'm Tom
字符串中带有双引号,可以使用单引号或三引号包含,也可以使用转译字符\
a = '"今天天气真好"'
b = '''"今天天气真好"'''
c = """"今天天气真"好"""
d = "\"今天天气真好\""
print(a)
print(b)
print(c)
print(d)

输出结果

"今天天气真好"
"今天天气真好"
"今天天气真"好
"今天天气真好"
  • 当使用三引号包含的时候,结尾不可以四个相同引号都相连"""今"天天气真好"""",如果结尾四个相同的引号,需要使用转译字符"""今"天天气真好\""""
字符串中单引双引都有的情况,可以使用三引号包含,也可以使用转译字符\
a = '''"I'm Tom"'''
b = """"I'm Tom\""""
c = '"I\'m Tom"'
d = "\"I'm Tom\""
print(a)
print(b)
print(c)
print(d)

输出结果

"I'm Tom"
"I'm Tom"
"I'm Tom"
"I'm Tom"

字符串的输出

  • 使用print直接输出字符串的数据
  • 使用%s格式化输出字符串
  • 使用f输出字符串
print('hello')
str1 = 'hello'
print('%s' % str1)
print(f'{str1}')

输出结果

hello
hello
hello

字符串的输入

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

input('提示信息:')

  • input返回一个字符串类型的数据
  • 用户输入的数据默认是字符串类型
password = input("请输入密码:")
print(f'您输入的密码是{password}')
print(f'密码的数据类型是{type(password)}')

输出结果

请输入密码:123
您输入的密码是123
密码的数据类型是<class 'str'>
  • input是阻塞式函数,等待用户输入后才继续执行

字符串的下标

  • 下标又叫索引,就是编号。
  • 下标的作用即是通过下标快速找到对应的数据
  • 下标的索引时从0开始的

下标的使用

str1 = 'abcdefg'
print(str1)
print(str1[0])

输出结果

abcdefg
a
  • 使用下标,可以精确的找到某个数据

切片

  • 切片即是截取字符串中的子串
  • 字符串、列表、元组都支持切片操作

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

  • 不包含结束位置下标对应的数据(左闭右开),正负整数均可
  • 步长是选取间隔,正负数均可,默认步长为1
str1 = 'abcdefg'
# 整个字符串
print(str1)
# 只获取c,使用下标的方法,得到的是下标为某个数字的数据
print(str1[2])
# 得到abc,使用切片的方法截取
print(str1[0: 3])

输出结果

abcdefg
c
abc

开始、结束、步长为正数

str1 = '012345678'
# 截取234
print(str1[2: 5: 1])  # 截取起始下标为2,终止下标为5的区间范围,左闭右开
print(str1[2: 5])  # 默认步长是1,如果截取的步长为1,则可以省略
# 截取的步长为2
print(str1[2: 5: 2])  # 步长为2,结果为24
# 截取从开始下标,到下标为5的区间范围,01234
print(str1[0: 5])  # 起始下标为0,结束下标为5
print(str1[: 5])  # 如果起始位置是从0开始,可以省略不写
# 截取从下标2开始,到结束位置
print(str1[2: len(str1)])  # 截取从下标2开始到末尾
print(str1[2:])  # 如果截取到最后,结束下标可以省略不写
# 截取全部
print(str1[0: len(str1)])  # 从开始到最后
print(str1[:])  # 开始和结束都省略,默认是从开始到结束

输出结果

234
234
24
01234
01234
2345678
2345678
012345678
012345678

开始、结束为正数,步长为负数

str1 = '012345678'
print(str1[::-1]) # 步长为负数,表示倒序选取,从右往左选取

输出结果

876543210

开始、结束为负数,步长为正数

str1 = '012345678'
print(str1[-4:-1])  # 567,下标-1表示最后一个数据,依次向前类推

输出结果

567

开始、结束下标为负数,步长为负数

str1 = '012345678'
print(str1[-4:-1:-1])  # 什么都没有选取,-4到-1的选取范围是567,步长-1,是从右向左选取,故而什么都选取不到

输出结果

总结

  • 步长为正数,表示从左到右选取数据
  • 步长为负数,表示从右向左选取数据
  • 如果开始下标 < 结束下标,步长为正数,可以选取到数据,步长为负数,选取不到数据
  • 如果开始下标 > 结束下标,步长为负数,可以选取到数据,步长为正数,选取不到数据
  • 选取方向和下方方向一致才能选取到数据

字符串查找

  • 字符串的常用操作方法有查找、修改和判断

查找

find()、rfind()
  • 所谓字符串查找方法即是查找子串在字符串中的位置或出现的次数

字符串序列.find(子串,开始位置下标,结束位置下标)

  • find():检测字符串中是否包含某个子串,如果包含,返回这个子串开始位置的下标,否则返回-1
  • 开始和结束位置可以省略,表示在整个字符串中查找
能找到,返回第一次出现的下标
str1 = 'ccabcsabc'
result = str1.find('abc')
print(result)  # 2

输出结果

2
找不到,返回-1
str1 = 'ccabcsabc'
result = str1.find('abs')
print(result)

输出结果

-1

字符串序列.rfind(子串,开始位置下标,结束位置下标)

  • rfind():同find(),查找方向从右向左查找
rfind():从右向左查找
str1 = 'ccabcsabc'
result = str1.rfind('abc')
print(result)

输出结果

6
index()、rindex()

字符串序列.index(子串,开始位置下标,结束位置下标)

  • index():检测某个子串是否包含在这个字符串中,如果在,返回这个子串开始位置的下标,否则报异常
能找到,返回第一次出现的索引
str1 = 'ccabcsabc'
result = str1.index('abc')
print(result)

输出结果

2
找不到,报异常处理
str1 = 'ccabcsabc'
result = str1.index('abs')
print(result)

输出结果

Traceback (most recent call last):
  File "/Users/apple/Desktop/code1/hello.py", line 2, in <module>
    result = str1.index('abs')
ValueError: substring not found

字符串系列.rindex(子串,开始位置下标,结束位置下标)

  • rindex():同index(),查找方向从右向左查找
从右向左查找
str1 = 'ccabcsabc'
result = str1.rindex('abc')
print(result)

输出结果

6
count()
  • 返回某个子串在字符串中出现的次数

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

  • 开始和结束位置下标可以省略,表示在整个字符串中查找
统计子串出现的次数
str1 = 'ccabcsabc'
result = str1.count('abc')
print(result)

输出结果

2
不存在,返回0
str1 = 'ccabcsabc'
result = str1.count('abs')
print(result)

输出结果

0

字符串修改

  • 所谓修改字符串,指的就是通过函数的形式修改字符串中的数据
  • 返回的都是一个新的字符串,原有字符串不变
  • 字符串是不可变数据类型

替换replace()

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

  • 从左到右依次使用新的子串替换旧的子串,替换指定的次数
  • 替换次数如果> 子串出现的次数,则替换次数为该子串出现次数
  • 替换次数可以不写,则默认替换所有
替换次数小于子串出现的次数
str1 = 'ssabcddabcrrabceeabc'
print(str1)
str2 = str1.replace('abc', '123', 2)
print(str2)

输出结果

ssabcddabcrrabceeabc
ss123dd123rrabceeabc
替换次数大于子串出现的次数
str1 = 'ssabcddabcrrabceeabc'
print(str1)
str2 = str1.replace('abc', '123', 5)
print(str2)

输出结果

ssabcddabcrrabceeabc
ss123dd123rr123ee123

分割

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

  • split():按照指定字符分割字符串
  • num是分割次数,分割后得到num+1个子串
  • 如果num小于等于分割字符出现的次数,则分割次数为num
  • 如果num大于分割字符出现的次数,则分割次数为分割字符出现的次数
  • 分割后的子串不再包含分割字符
分割次数小于分割字符出现的次数
str1 = 'ssabcddabcrrabceeabc'
print(str1)
print(str1.split('abc',2))

输出结果

ssabcddabcrrabceeabc
['ss', 'dd', 'rrabceeabc']
分割次数大于分割字符出现的次数
str1 = 'ssabcddabcrrabceeabc'
print(str1)
print(str1.split('abc',8))

输出结果

ssabcddabcrrabceeabc
['ss', 'dd', 'rr', 'ee', '']

拼接

字符或子串.join(多字符串组成的序列)

  • 使用字符或子串,拼接序列,形成一个新的字符串
list1 = ['aa', 'bb', 'cc', 'dd']
print(list1)
str1 = '***'.join(list1)
print(str1)

输出结果

['aa', 'bb', 'cc', 'dd']
aa***bb***cc***dd

首字母大写,其余字母小写

字符串.capitalize()

  • 将字符串第一个字符转换成大写
  • 只有第一个字符大写,其余全部转换成小写
str1 = "hello World.How are You"
print(str1)
print(str1.capitalize())

输出结果

hello World.How are You
Hello world.how are you

每个单词首字母大写

字符串.title()

  • 将字符串每个单词首字母转换成大写
str1 = "hello World.How are You"
print(str1)
print(str1.title())

输出结果

hello World.How are You
Hello World.How Are You

大写转小写

字符串.lower()

-将字符串的所有字母都转换成小写字母

str1 = "hello World.How are You"
print(str1)
print(str1.lower())

输出结果

hello World.How are You
hello world.how are you

小写转大写

字符串.upper()

  • 将字符串中所有字母都转换成大写字母
str1 = "hello World.How are You"
print(str1)
print(str1.upper())

输出结果

hello World.How are You
HELLO WORLD.HOW ARE YOU

去除左端空格

字符串.lstrip()

  • 去除字符串左侧空白字符
str1 = "  hello World.How are You  "
print(str1)
print(str1.lstrip())

输出结果

  hello World.How are You  
hello World.How are You 

去除右端空格

字符串.rstrip()

  • 去除字符串右侧空白字符
str1 = "  hello World.How are You  "
print(str1)
print(str1.rstrip())

输出结果

  hello World.How are You  
  hello World.How are You
  • 输出结果第一行右侧有空白字符,第二行没有

去除两端空格

字符串.strip()

  • 去除字符串两端的空白字符
str1 = "  hello World.How are You  "
print(str1)
print(str1.strip())

输出结果

  hello World.How are You  
hello World.How are You

返回一个指定长度左对齐的字符串

字符串.ljust(长度,填充字符)

  • 填充字符可以不写,默认空字符
  • 将字符串扩充到指定长度,右侧补充设置的填充字符
  • 如果设置的字符串长度小于字符串的长度,则原样输出
str1 = "abc"
print(str1)
print(str1.ljust(7, '*'))

输出结果

abc
abc****

返回一个指定长队右对齐的字符串

字符串.rjust(长度, 填充字符)

  • 填充字符可以不写,默认空白
  • 将字符串扩充到指定长度,左侧补充设置的填充字符
  • 如果设置的长度小于原字符串的长度,则原样输出
str1 = "abc"
print(str1)
print(str1.rjust(7))

输出结果

abc
    abc

返回一个指定长度居中对齐的字符串

字符串.center(长度,填充字符)

  • 填充字符可以不写,默认空白字符
  • 将字符串扩充到指定长度,两端补充设置的填充字符
  • 如果设置的长度小于原字符串的长度,则原样输出
str1 = "abc"
print(str1)
print(str1.center(7,"*"))

输出结果

abc
**abc**

字符串判断

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

判断是否以指定子串开头

字符串序列.startswith(子串,开始下标,结束下标)

  • startswith():检查字符串是否以指定子串开头,是返回True,否则返回False
  • 如果不设置开始和结束下标,默认是整个字符串
  • 设置开始和结束下标,则是开始和结束下标内的指定区间
str1 = "hello world"
print(str1)
print(str1.startswith('hello'))
print(str1.startswith('holl'))

输出结果

hello world
True
False

判断是否以指定子串结尾

字符串.endswith(子串,开始下标,结束下标)

  • endswith():检查字符串是否以指定子串结尾,是则返回True,否则返回False
  • 如果不设置开始和结束下标,默认是整个子串
  • 设置开始和结束下标,则是开始和结束下标区间内的指定区域
str1 = "hello world"
print(str1)
print(str1.endswith('world'))
print(str1.startswith('woold'))

输出结果

hello world
True
False

判断是否全部由字母组成

字符串.isalpha()

  • 如果字符串全部是由字母组成,返回True,否则返回False
str1 = "hello world"
str2 = 'hello'
print(str1.isalpha())
print(str2.isalpha())

输出结果

False
True

判断是否全部由数字组成

字符串.isdigit()

  • 如果字符串全部是由数组组成,返回True,否则返回False
str1 = '123'
str2 = '123abc'
str3 = 'a bc'
print(str1.isdigit())
print(str2.isdigit())
print(str3.isdigit())

输出结果

True
False
False

判断是否全部由数组或字母组成

字符串.isalnum()

  • 如果字符串中只包含数字和字母,返回True,否则返回False
str1 = 'abc'
str2 = '123'
str3 = '123abc'
str4 = '123 abc'
str5 = '123$abc'
print(str1.isalnum())
print(str2.isalnum())
print(str3.isalnum())
print(str4.isalnum())
print(str5.isalnum())

输出结果

True
True
True
False
False

判断是否只包含空白字符

字符串.isspace()

  • 如果字符串中只包含空白字符,返回True,否则返回False
  • 空字符串,返回False,字符串要有长度
str1 = ''
str2 = '   '
str3 = ' abc '
print(str1.isspace())
print(str2.isspace())
print(str3.isspace())

输出结果

False
True
False

相关文章

  • 006-字符串

    字符串 字符串是Python中最常用的数据类型。一般使用引号来创建字符串 使用单引号创建字符串'hello' 使用...

  • 送礼红酒怎么包?瓶子礼物怎么包装?

    瓶形礼物包装方法。 礼盒先生 基础礼物包装教程006-酒瓶01【图文版】 1. 基础礼物包装006-酒瓶01↓ 2...

  • 006-字符串的定义

    前面我们讲解了什么是字符串。字符串可以用' '或者" "括起来表示。 如果字符串本身包含'怎么办?比如我们要表示字...

  • 006- 字符串和转义字符

    文/帅朋 前面我们讲解了什么是字符串。字符串可以用' '或者" "括起来表示。 如果字符串本身包含'怎么办?比如我...

  • Selenium学习笔记目录

    Selenium学习笔记目录(倒序) Selenium学习007-使用技巧 Selenium学习006-查询123...

  • 【连载】云山乱-目录

    001-蟠龙山 002-龙涎草 003-比胆量 004-困山腹 005-出路显 006-救女婴

  • 006-花卉

    今日金句 「我们的许多梦想一开始看似不可能实现,接着变得不大可能实现。然后,在我们下定决心后,它们很快变得必然会实...

  • 006-躲雨

    窗外的风吹进来的热气渐渐消减了屋内的冷空气,这样的温度刚好适应现在的体质,微凉但还算舒服。 雨可能就要来了,对,雨...

  • 006-函数

    1、定义:封装起来的代码块,实现特定功能、模块,代码复用 2、本质:输入与输出 3、作用:1.代码复用,常用功能封...

  • 【火炉炼AI】深度学习006-移花接木-用Keras迁移学习提升

    【火炉炼AI】深度学习006-移花接木-用Keras迁移学习提升性能 (本文所使用的Python库和版本号: Py...

网友评论

      本文标题:006-字符串

      本文链接:https://www.haomeiwen.com/subject/xgxgirtx.html