目录

Python基础语法(7)字符串

Python基础语法(7)字符串

认识字符串

字符串简而言之是用引号在两边标记的数据,是Python中最常用的数据类型,创建字符串很简单,只要为变量分配一个值即可。字符串的常见知识点有:下标、切片、常用操作方法。

字符串特征

单引号字符串:

1
str = 'python'

双引号字符串:

1
str1 = "python"

三引号字符串(可以多行):

1
str2 = '''l love python'''

⚠️注意:

  • 单引号或双引号需要多行写长字符串时(但字符串输出显示仍在一行),需要用反斜杠\进行换行(只是方便代码书写阅读);

  • 三引号的字符串在输出时也是多行显示;

  • 单引号的字符串中一般不要包括单引号,如果需要加反斜杠进行转义。


字符串的输出

1
2
3
4
print("hello python")
str = "hello python"
print("%s" % str)  # 格式化输出
print(f"{str}")  # f输出

字符串的输入

在python中,使用input()接受用户的输入

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

下标

“下标”又称“索引”,就是编号,比如火车位的座位号,座位号的作用:按照座位编号可以快速找到对应的座位。同理,下标的作用即是通过下标快速找到对应的数据。利用下标我们可以找到数据序列中的某一个数据。默认下标是

以0开始。

1
2
str1 = "hello python"
print(str[1])  # 打印数据序列里下标编号为1的数据,打印结果即为e

切片

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

语法:

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

⚠️注意:不包含结束位置下标对应的数据(左闭右开),正负数均可,步长是选取间隔,正负数均可,默认为1。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
str = "0123456789"
print(str[2:5:1])  # 234
print(str[2:5:2])  # 24
print(str[2:5])  # 234  (默认值为1)
print(str[:5])  # 01234  不写开始下标,默认从0开始选取
print(str[2:])  # 23456789  不写结束下标,默认选到最后
print(str[:])  # 0123456789  不写开始和结束,默认全选

print(str[::-1])  # 9876543210 步长为负数时,则倒叙选取
print(str[-4:-1])  # 678 下标-1为最后一个数据,以此向后选取
print(str[-4:1:1])  # 不输出,从下标-4到1方向为从右往左,步长1为从左到右,冲突
print(str[-4:-1:-1])  # 不输出,从下标-4到-1方向为从左到右,步长-1为从右到左,冲突

常用操作方法

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

查找

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

  1. find():检查某个子串是否包含在这个字符串中,如果在返回子串开始的下标,如果不在返回-1。

    语法

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

    实验

    1
    2
    3
    4
    
    str = "i love learning code"
    print(str.find("learning"))  # 7
    print(str.find("l", 3, 15))  # 7
    print(str.find("999", 3, 15))  # -1
    
  2. rfind():find()函数从右往左的实现。用法和返回结果和一样。

  3. index():与find()函数作用一样,检查某个子串是否包含在这个字符串中,如果在返回子串开始位置的下标,如果不在则报错异常。

    语法

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

    实验

    1
    2
    3
    4
    
    str = "i love learning code"
    print(str.index("learning"))  # 7
    print(str.index("l", 3, 15))  # 7
    print(str.index("999", 3, 15))  # 报错
    
  4. rindex():index()函数的从右往左的实现。用法和返回结果和一样。

  5. count():返回子串出现的次数

    语法

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

    实验

    1
    2
    3
    4
    
    str = "i love learning code"
    print(str.count("learning"))  # 1
    print(str.count("l", 3, 15))  # 1
    print(str.count("999", 3, 15))  # 0
    

修改

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

  1. replace():替换的函数

    语法

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

    ⚠️注意:最后一个参数替换次数小于实际可替换的值时从左往右依据替换次数进行替换,大于等于可替换值时全部替换;字符串是不可变数据类型

    实验

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    str = "you and me and him"
    str.replace("and", "+")
    print(str)# 原字符串没有变化,说明字符串是不可变数据类型
    newStr = str.replace("and", "+")
    print(newStr)
    print(str.replace("and", "+"))  
    # replace()函数会返回一个新的修改好的字符串
    # you + me + him
    print(str.replace("and", "+", 1))  # 最后一个参数替换次数小于实际可替换的值时从左往右依据替换次数进行替换,大于等于可替换值时全部替换
    # you + me and him
    
  2. split():分割,并返回一个列表,丢掉分割字符。

    语法

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

    ⚠️注意:num表示分割字符出现的次数,返回数据的个数为num+1个。

    实验

    1
    2
    3
    4
    5
    6
    7
    8
    
    str = "you and me and him"
    str.split("and")
    print(str)# 原字符串没有变化,说明字符串是不可变数据类型
    newStr = str.split("and")
    print(newStr)
    # ['you ', ' me ', ' him']
    print(str.split("and", 1))
    # ['you ', ' me and him']
    
  3. join():合并列表里面的字符串数据为一个大的字符串数据。

    语法

    1
    
    字符或子串.join(多字符串组成的序列如:列表)
    

    实验

    1
    2
    3
    4
    
    list = ['you', 'me', 'him']
    newStr = " and ".join(list)
    print(newStr)
    # you and me and him
    

大小写转换

  1. capitalize():将字符串第一个字符转换成大写。(只有第一个字母大写,其他的大写会被转化为小写)

    1
    2
    3
    
    str = "Hello Python"
    print(str.capitalize())
    # Hello python
    
  2. title():将字符串的每一个单词的首字母都转换成大写。

    1
    2
    3
    
    str = "Hello Python"
    print(str.titile())
    # Hello Python
    
  3. lower():将字符串中存在的大写字符转化为小写。

    1
    2
    3
    
    str = "Hello Python"
    print(str.lower())
    # hello python
    
  4. upper():将字符串中存在的小写字符转化为大写。

    1
    2
    3
    
    str = "Hello Python"
    print(str.upper())
    # HELLO PYTHON
    

删除首尾空白字符

  1. lstrip():删除字符串左侧的空白字符。

    1
    2
    3
    
    str = "  12 3  "
    print(str.lstrip())
    #12 3  
    
  2. rstrip():删除字符串右侧的空白字符。

    1
    2
    3
    
    str = "  12 3  "
    print(str.rstrip())
    #  12 3
    
  3. strip():删除字符串两侧的空白字符。

    1
    2
    3
    
    str = "  12 3  "
    print(str.strip())
    #12 3
    

字符串对齐

  1. ljust():返回一个字符串左对齐,并且指定字符填充至对应长度的新字符串。

    语法

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

    实验

    1
    2
    3
    
    str = "hello"
    print(str.ljust(8,"."))
    #hello...
    
  2. rjust():返回一个字符串右对齐,并且指定字符填充至对应长度的新字符串。

    语法

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

    实验

    1
    2
    3
    
    str = "hello"
    print(str.ljust(8,"."))
    #...hello
    
  3. center():返回一个字符串居中对齐,不是绝对居中,指定字符填充至对应长度的新字符串。

    语法

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

    实验

    1
    2
    3
    4
    5
    
    str = "hello"
    print(str.center(9,"."))
    #..hello..
    print(str.center(8,"."))
    #.hello..
    

判断

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

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

    语法

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

    实验

    1
    2
    3
    4
    5
    6
    7
    
    str = "I'm learning python"
    print(str.startswith("I'm", 0, 8))
    print(str.startswith("I'm", 0, 2))
    print(str.startswith("1", 0, 8))
    # True
    # False
    # False
    
  2. endswith():检查字符串是否以指定子串结尾,是则返回True,否则返回False,如果设置开始和结束位置下标,则在指定范围内检查。

    语法

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

    实验

    1
    2
    3
    4
    5
    6
    7
    
    str = "I'm learning python
    print(str.endswith("on"))
    print(str.endswith("python", 0, 99))
    print(str.endswith("python", 0, 8))
    # True
    # True
    # False
    
  3. isalpha():如果非空字符串所有字符都是字母,则返回True,否则返回False。

    语法

    1
    
    字符串序列.isalpha()
    

    实验

    1
    2
    3
    
    str = "I'm learning python"
    print(str.isalpha())
    # False 有空格和单引号故为False
    
  4. isdigit():如果字符串只包含数字则返回True,否则返回False。

    语法

    1
    
    字符串序列.isdigit()
    

    实验

    1
    2
    3
    
    str = "123456"
    print(str.isdigit())
    # True
    
  5. isalnum():如果非空字符串并且所有字符都是字母或者数字则返回True,否则返回False。

    语法

    1
    
    字符串序列.isalnum()
    

    实验

    1
    2
    3
    
    str = "123456abcd"
    print(str.isalnum())
    # True
    
  6. isspace():如果字符串只有空格,则返回True,否则返回False。

    语法

    1
    
    字符串序列.isspace()
    

    实验

    1
    2
    3
    
    str = "     "
    print(str.isspace())
    # True
    

总结

首先要认识字符串的作用,其次要明白字符串的三种操作方式:下标,切片,常用操作方法。

  • 下标:计算机位为数据序列中的每个元素进行分配从0开始的编号。

  • 切片:

    1
    
    序列名[开始位置下标:结束位置下标:步长]
    
  • 常用操作方法:

    • find()和index():查找数据序列中某一个数据的下标,查找失败前者返回-1,后者返回报错异常。(查找)

    • replace()和split():前者对字符串中的子串进行修改,后者对字符串进行分割为序列的操作。join()对序列进行合并为字符串的操作。(修改)

    • capitalize()、title()、lower()、upper():是分别对数据第一个字符大写、整个字符大写、存在的大写字符改小写、存在的小写字符改大写的操作。(大小写转换)

    • strip():是对数据两侧进行空白的删除,加r和l的函数是对右边和左边做删除空白操作。(删除首尾空白)

    • ljust()、rjust()、center():是对数据进行左对齐,右对齐,居中操作。(对齐)

    • startswith()、endswith()、isalpha()、isdigit()、isnum()、isspace():是对字符串进行开头子串匹配判断、结尾子串匹配判断、字母组成判断、数字组成判断、数字和字母组合判断、空白判断的操作。(判断)