目录

一、字符串简介

1.1 字符串的定义

1.2 字符串的特性

1.3 字符串的底层存储结构

二、字符串切片

2.1 什么是切片

2.2 切片使用方式(语法)

2.3 切片规则⭐⭐⭐

三、字符串常用方法

3.1 字符串查找

3.2 字符串修改

3.3 字符串分割和拼接

3.4 字符串判断

3.5 字符串格式化

总结:


一、字符串简介

1.1 字符串的定义

字符串(String)是由零个或多个字符组成的有限序列,是编程中常用的基本数据类型。在大多数编程语言中,字符串通常用双引号(")或单引号(')括起来表示。

除此之外三引号(""")或(''')也可以声明字符串,使用三引号表示的字符串会保留其引号内部原有的格式。【三引号】

例如,在 Python 中,字符串可以定义为:

string1 = "Hello, World!"
string2 = 'Hello, World!'

1.2 字符串的特性

字符串具有以下主要特性:

  1. 不可变性:字符串一旦创建,其内容不可更改。若需修改,只能通过创建新的字符串实现。

  2. 有序性:字符串中的字符按特定顺序排列,可通过索引访问每个字符。

  3. 可迭代性:字符串可以被遍历,例如使用循环访问每个字符。

1.3 字符串的底层存储结构

在计算机底层,Python中的字符串是一段连续的内存地址。

注意:索引下标从0开始

索引下标是编程中用于快速访问数据结构(如数组、列表、字符串等)中特定元素的位置标识。

下面是一个简单的Python示例来说明索引的用途:

# 创建一个学生名单列表
students = ["张三", "李四", "王五", "赵六", "钱七"]
# 使用索引访问特定位置的学生
print("第一名学生:", students[0])  # 索引从0开始
print("第三名学生:", students[2])
print("最后一名学生:", students[-1])  # 负数索引表示从末尾开始计数
# 修改特定位置的学生信息
students[1] = "李四(转学)"
print("更新后的名单:", students)

输出结果:

第一名学生: 张三
第三名学生: 王五
最后一名学生: 钱七
更新后的名单: ['张三', '李四(转学)', '王五', '赵六', '钱七']

二、字符串切片

2.1 什么是切片

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

2.2 切片使用方式(语法)

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

  1. 不包含结束位置下标对应的数据,正负数均可。

  2. 步长:选取间隔,正负均可,不能为零,默认步长为1。

  3. 索引从0开始,负索引表示从字符串末尾开始计数

  4. 省略start表示从开头开始,省略end表示到末尾结束

示例:

# 示例1:基本切片操作
text = "Hello, World!"
print(text[0:5])    # 输出: Hello (索引0到4)
print(text[7:12])   # 输出: World (索引7到11)
print(text[:5])     # 输出: Hello (从开始到索引4)
print(text[7:])     # 输出: World! (从索引7到结束)
# 示例2:使用步长
alphabet = "abcdefghijklmnopqrstuvwxyz"
print(alphabet[0:26:2])  # 输出: acegikmoqsuwy (每隔一个字符)
print(alphabet[::3])     # 输出: adgjmpsvy (每隔两个字符)
print(alphabet[::-1])    # 输出: zyxwvutsrqponmlkjihgfedcba (反转字符串)
# 示例3:负索引切片
message = "Python Programming"
print(message[-11:-1])   # 输出: Programmin (从倒数第11个到倒数第2个)
print(message[-11:])     # 输出: Programming (从倒数第11个到结束)
print(message[:-12])     # 输出: Python (从开始到倒数第13个)

2.3 切片规则⭐⭐⭐

  1. [:] 提取整个字符串

  2. [start:] 从start索引开始到结尾

  3. [:end] 从开始到end-1

  4. [start:end] 从start到end-1

  5. [start:end:step] 从start到end-1,步长是step

  6. [::-1] 倒着获取整个字符串(相当于将字符串倒序排列)

三、字符串常用方法

3.1 字符串查找

  1. find()函数

    find():检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标(即首个匹配项的下标),否则返回-1

    基本语法:

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

    【注意】:开始和结束位置下标可以省略,表示再生个字符串序列中查找。

    s = 'hello world and hello python'
    print(s.find('hello'))  # 0
    print(s.find('hello',10,27))  # 16
    print(s.find('z'))  # -1
    
  2. index()函数

    index():检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标(即首个匹配项的下标),否则报异常。

    基本语法:

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

s = 'hello world and hello python'
print(s.index('hello'))  # 0
print(s.index('hello',10,27))  # 16
print(s.index('z'))  # 抛出异常

3.2 字符串修改

由于字符串是不可变类型,所以修改的时候不能改变原有字符串,而是生成新的字符串

1. replace()函数——子串替换

        replace():返回替换后的字符串(相当于生成了一个新的字符串)。

        基本语法:

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

s = 'hello world and hello python'
print(s.replace('hello', 'goodbye'))
# goodbye world and goodbye python
print(s.replace('hello', 'goodbye', 1))
# goodbye world and hello python
print(s)
# hello world and hello python 

2. 大小写转换

s = "  Hello, World!  "
# 大小写转换
print(s.upper())        # '  HELLO, WORLD!  '  全部转为大写
print(s.lower())        # '  hello, world!  '  全部转为小写
print(s.title())        # '  Hello, World!  '  所有单词的首字母大写
print(s.capitalize())   # '  Hello, world!  '  整个字符串的首字母大写
print(s.swapcase())     # '  hELLO, wORLD!  '  大小写转换(大->小;小->大)

3. 去除首尾信息

s = "  *Hello, World!*  "
print(s.strip())          # 默认去除首尾的空格
print(s.strip('*'))       # 去除首尾的*
print(s.rstrip())         # 去除右边(尾部)的空格
print(s.lstrip())         # 去除左边(头部)的空格

3.3 字符串分割和拼接

1. split()函数——分割字符

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

基本语法;

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

        【注意】num是分割字符出现的次数,最后返回的数据个数是num+1个

s = "我是程序员,我喜欢,香蕉,苹果,敲代码"
print(s.split(','))
# ['我是程序员', '我喜欢', '香蕉', '苹果', '敲代码']
print(s.split(',',2))
# ['我是程序员', '我喜欢', '香蕉,苹果,敲代码']

2. 拼接字符串

        a.使用“+”拼接字符串

s1 = 'Hello'
s2 = 'world'
print(s1+' '+s2+'!')
# Hello world!

        b.join()函数:使用一个字符或子串合并字符串,即将多个字符串合并为一个新的字符串。

str_list = ['hello','world','!']
print(' '.join(str_list))  # hello world !
print('-'.join('hello'))   # h-e-l-l-o

3.4 字符串判断

# 判断是否以该子串或字符开头
s.startswith('He')   # True
# 是否以该子串或字符开头
s.endswith('123')     # True
s.isalpha()           # False (是否全字母)
s.isdigit()           # False (是否全数字)
s.isalnum()           # True (是否字母或数字)
# 是否全部小写
s.islower()           # False
# 是否全部大写
s.isupper()           # False
s.isspace()           # False (是否空白字符)

3.5 字符串格式化

# f-string (Python 3.6+)
name = "Alice"
f"Hello, {name}!"  # 'Hello, Alice!'
# format方法
"{} + {} = {}".format(2, 3, 5)  # '2 + 3 = 5'
"{1} {0}".format("World", "Hello")  # 'Hello World'

总结:

字符串是由单引号、双引号或者三单(双)引号围起来的一个序列。相当于列表[1,2,3 ]引号里面的每个字符都是一个元素,都可以使用索引和切片的方式访问其中一个元素或一个子串。

字符串是一种不可改变的常量,所谓的字符串更改和字符串内部发生改变,实际上是将修改后的新的字符串重新赋值给当前变量,也就是说:不是原来的字符串,而是诞生了一个新的字符串。

上述总结的是字符串的常用方法,其实还有很多方法,这里我们只学习基础的常用方法。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐