目录
字符串的创建
在 Python 中,字符串是用单引号(')、双引号(")或三引号(''' 或 """)括起来的字符集合
单引号和双引号
使用单引号或双引号创建字符串时,字符串的内容可以是字母、数字、符号等字符的组合
str1 = 'Hello'
str2 = "Python"
如果字符串中包含单引号或双引号,需要使用转义字符 \ 来表示
str3 = 'It\'s a sunny day'
str4 = "He said, \"Hello\""
也可以通过使用三引号来避免转义字符的使用
str5 = """He said, "Hello" """
三引号
三引号可以创建多行字符串,它允许字符串跨越多行,并且保留字符串中的换行符和缩进
str6 = """
This is a
multi-line string.
"""
字符串的索引和切片
字符串是一个有序的字符集合,可以通过索引和切片来访问和操作字符串中的字符
索引
字符串的索引从 0 开始,从左到右依次递增
str7 = "Python"
print(str7[0]) # 输出:P
print(str7[2]) # 输出:t
也可以使用负索引从右到左访问字符串中的字符,负索引从 -1 开始,从右到左依次递减
print(str7[-1]) # 输出:n
print(str7[-3]) # 输出:h
切片
切片可以获取字符串中的一部分字符,语法为 string[start:end:step] ,其中 start 是切片的起始索引(包含), end 是切片的结束索引(不包含), step 是步长,默认值为 1
str8 = "Hello, World!"
print(str8[0:5]) # 输出:Hello
print(str8[7:12]) # 输出:World
print(str8[0:12:2]) # 输出:Hlo ol
如果省略 start ,则从字符串的开头开始切片;如果省略 end ,则切片到字符串的末尾
# 省略start
print(str8[:5]) # 输出:Hello
# 省略end
print(str8[7:]) # 输出:World!
使用负索引和步长可以实现字符串的反转
print(str8[::-1]) # 输出:!dlroW ,olleH
字符串的拼接
可以使用加号( + )操作符将两个或多个字符串拼接在一起
使用加号拼接
使用加号拼接字符串时,需要注意字符串之间是否有空格或其他分隔符
str9 = "Hello"
str10 = "World"
str11 = str9 + " " + str10
print(str11) # 输出:Hello World
使用 join() 方法拼接
join() 方法可以将一个可对象迭代(如列表、元组等)中的字符串元素拼接成一个字符串,语法为 string.join(iterable) ,使用 join() 方法拼接字符串时,可以指定分隔符,如空格、逗号等
list1 = ["Hello", "World"]
str12 = " ".join(list1)
print(str12) # 输出:Hello World
字符串的格式化
字符串格式化可以将变量或表达式嵌入到字符串中,生成动态的字符串
使用 % 格式化
%s 用于格式化字符串, %d 用于格式化整数, %f 用于格式化浮点数等
name = "Tom"
age = 20
str13 = "My name is %s, I am %d years old." % (name, age)
print(str13) # 输出:My name is Tom, I am 20 years old.
使用 str.format() 方法格式化
str.format() 方法可以使用占位符 {} 来格式化字符串,语法为 string.format(value1, value2, ...)
str14 = "My name is {}, I am {} years old.".format(name, age)
print(str14) # 输出My: name is Tom, I am 20 years old.
也可以通过指定占位符的索引来控制变量的顺序
str15 = "My name is {0}, I am {1} years old.".format(name, age)
print(str15) # 输出:My name is Tom, I am 20 years old.
使用 f-string 格式化(Python 3.6+)
f-string 是一种新的字符串格式化方法,使用 f 前缀和大括号 {} 来嵌入变量或表达式
str16 = f"My name is {name}, I am {age} years old."
print(str16) # 输出:My name is Tom, I am 20 years old.
字符串的常用方法
大小写转换
upper() 方法将字符串中的所有字符转换为大写
str17 = "hello"
print(str17.upper()) # 输出:HELLO
lower() 方法将字符串中的所有字符转换为小写
str18 = "HELLO"
print(str18.lower()) # 输出:hello
capitalize() 方法将字符串的第一个字符转换为大写,其余字符转换为小写
str19 = "hello"
print(str19.capitalize()) # 输出:Hello
title() 方法将字符串中每个单词的首字母转换为大写
str20 = "hello world"
print(str20.title()) # 输出:Hello World
查找和替换
find() 方法用于查找字符串中某个子串开始的索引位置,如果子串不存在,则返回 -1
str21 = "Hello World,!"
print(str21.find("World")) # 输出:6
print(str21.find("Python")) # 输出:-1
replace() 方法用于替换字符串中的子串,语法为 string.replace(old, new, count) ,其中 old 是要替换的子串, new 是替换后的子串, count 是替换的次数(可选)
str22 = "Hello, World!"
str23 = str22.replace("World", "Python")
print(str23) # 输出:Hello, Python!
分割和连接
split() 方法用于将字符串分割成一个列表,语法为 string.split(sep, maxsplit) ,其中 sep 是分隔(符默认为空白字符,如空格、换行符等), maxsplit 是分割的最大次数(可选)
str24 = "Hello, World!"
list2 = str24.split(", ")
print(list2) # 输出:['Hello', 'World!']
join() 方法用于将一个可迭代对象中的字符串元素拼接成一个字符串,语法为 string.join(iterable)
list3 = ["Hello", "World"]
str25 = " ".join(list3)
print(str25) # 输出:Hello World
使用字符串常量
在程序中,如果多次使用相同的字符串,可以将字符串定义为常量,避免重复创建字符串对象
CONSTANT = "Hello"
str26 = CONSTANT + " World"
print(str26) # 输出:Hello, World
去除空白字符
strip() 方法用于去除字符串两端的空白字符(包括空格、换行符等)
str27 = " Hello, World! "
print(str27.strip()) # 输出:Hello, World!
lstrip() 方法用于去除字符串左边的空白字符
print(str27.lstrip()) # 输出:Hello, World!
rstrip() 方法用于去除字符串右边的空白字符
print(str27.rstrip()) # 输出: Hello, World!
判断字符串
isalpha() 方法用于判断字符串是否只包含字母
str28 = "Hello"
print(str28.isalpha()) # 输出:True
str29 = "Hello123"
print(str29.isalpha()) # 输出:False
isdigit() 方法用于判断字符串是否只包含数字
str30 = "123"
print(str30.isdigit()) # 输出:True
str31 = "123a"
print(str31.isdigit()) # 输出:False
isalnum() 方法用于判断字符串是否只包含字母或数字
str32 = "Hello123"
print(str32.isalnum()) # 输出:True
str33 = "Hello123!"
print(str33.isalnum()) # 输出:False
isspace() 方法用于判断字符串是否只包含空白字符
str34 = " "
print(str34.isspace()) # 输出:True
str35 = " a "
print(str35.isspace()) # 输出:False
字符串的编码和解码
在 Python 中,字符串是以 Unicode 编码存储的,但在处理文件或网络通信时,可能需要将字符串编码为其他格式,如 UTF-8、ASCII 等
编码
使用 encode() 方法可以将字符串编码为指定的格式,语法为 string.encode(encoding, errors) ,其中 encoding 是编码格式, errors 是错误处理方式(可选)
str35 = "你好"
bytes1 = str35.encode("utf-8")
print(bytes1) # 输出:b'\xe4\xbd\xa0\xe5\xa5\xbd'
解码
使用 decode() 方法可以将字节串解码为字符串,语法为 bytes.decode(encoding, errors) ,其中 encoding 是解码格式, errors 是错误处理方式(可选)
bytes2 = b'\xe4\xbd\xa0\xe5\xa5\xbd'
str36 = bytes2.decode("utf-8")
print(str36) # 输出:你好