Appearance
Python 字符串
字符串是 Python 中最常用的数据类型之一,用于表示文本数据。本章节将详细介绍 Python 中的字符串及其操作。
字符串的创建
在 Python 中,可以使用单引号、双引号或三引号来创建字符串。
示例:
python
# 字符串的创建
# 使用单引号
str1 = 'Hello, World!'
print(str1) # 输出:Hello, World!
# 使用双引号
str2 = "Hello, World!"
print(str2) # 输出:Hello, World!
# 使用三引号(可以包含多行)
str3 = '''Hello,
World!'''
print(str3) # 输出:Hello,
# World!
# 使用三引号的另一种形式
str4 = """Hello,
World!"""
print(str4) # 输出:Hello,
# World!字符串的访问
可以使用索引来访问字符串中的单个字符,使用切片来访问子字符串。
索引
字符串的索引从 0 开始,可以使用正索引或负索引。
示例:
python
# 字符串的索引
str = "Hello, World!"
# 正索引
print(str[0]) # 输出:H
print(str[1]) # 输出:e
print(str[2]) # 输出:l
print(str[3]) # 输出:l
print(str[4]) # 输出:o
# 负索引(从右向左)
print(str[-1]) # 输出:!
print(str[-2]) # 输出:d
print(str[-3]) # 输出:l
print(str[-4]) # 输出:r
print(str[-5]) # 输出:o切片
使用切片操作可以获取字符串的子串,语法为 str[start:end:step]。
示例:
python
# 字符串的切片
str = "Hello, World!"
# 获取从索引 0 到 5 的子串(不包含索引 5)
print(str[0:5]) # 输出:Hello
# 获取从索引 7 到末尾的子串
print(str[7:]) # 输出:World!
# 获取从开始到索引 5 的子串
print(str[:5]) # 输出:Hello
# 获取整个字符串
print(str[:]) # 输出:Hello, World!
# 使用步长
print(str[::2]) # 输出:Hlo ol!
# 反向字符串
print(str[::-1]) # 输出:!dlroW ,olleH
# 获取从索引 7 到 10 的子串
print(str[7:11]) # 输出:World字符串的修改
在 Python 中,字符串是不可变的,这意味着不能直接修改字符串中的字符。但是可以通过拼接、切片等操作来创建新的字符串。
示例:
python
# 字符串的修改
# 字符串拼接
str1 = "Hello"
str2 = "World"
str3 = str1 + ", " + str2 + "!"
print(str3) # 输出:Hello, World!
# 使用乘法运算符重复字符串
str4 = "Hello " * 3
print(str4) # 输出:Hello Hello Hello
# 使用格式化字符串
name = "Alice"
age = 30
str5 = f"My name is {name} and I am {age} years old."
print(str5) # 输出:My name is Alice and I am 30 years old.
# 使用 format 方法
str6 = "My name is {} and I am {} years old.".format(name, age)
print(str6) # 输出:My name is Alice and I am 30 years old.
# 使用 % 运算符
str7 = "My name is %s and I am %d years old." % (name, age)
print(str7) # 输出:My name is Alice and I am 30 years old.字符串的方法
Python 提供了许多内置的字符串方法,用于操作字符串。
大小写转换
| 方法 | 描述 | 示例 |
|---|---|---|
lower() | 转换为小写 | "HELLO".lower() 返回 "hello" |
upper() | 转换为大写 | "hello".upper() 返回 "HELLO" |
capitalize() | 首字母大写,其余小写 | "hello world".capitalize() 返回 "Hello world" |
title() | 每个单词的首字母大写 | "hello world".title() 返回 "Hello World" |
swapcase() | 大小写互换 | "Hello World".swapcase() 返回 "hELLO wORLD" |
示例:
python
# 大小写转换
str = "Hello, World!"
print(str.lower()) # 输出:hello, world!
print(str.upper()) # 输出:HELLO, WORLD!
print(str.capitalize()) # 输出:Hello, world!
print(str.title()) # 输出:Hello, World!
print(str.swapcase()) # 输出:hELLO, wORLD!字符串搜索
| 方法 | 描述 | 示例 |
|---|---|---|
find(sub) | 查找子串第一次出现的位置,未找到返回 -1 | "Hello".find("l") 返回 2 |
rfind(sub) | 查找子串最后一次出现的位置,未找到返回 -1 | "Hello".rfind("l") 返回 3 |
index(sub) | 查找子串第一次出现的位置,未找到抛出异常 | "Hello".index("l") 返回 2 |
rindex(sub) | 查找子串最后一次出现的位置,未找到抛出异常 | "Hello".rindex("l") 返回 3 |
count(sub) | 统计子串出现的次数 | "Hello".count("l") 返回 2 |
示例:
python
# 字符串搜索
str = "Hello, World!"
print(str.find("World")) # 输出:7
print(str.find("Python")) # 输出:-1
print(str.rfind("o")) # 输出:8
print(str.index("World")) # 输出:7
print(str.count("o")) # 输出:2字符串替换
| 方法 | 描述 | 示例 |
|---|---|---|
replace(old, new, count) | 将 old 替换为 new,count 为替换次数 | "Hello".replace("l", "x") 返回 "Hexxo" |
示例:
python
# 字符串替换
str = "Hello, World!"
print(str.replace("World", "Python")) # 输出:Hello, Python!
print(str.replace("o", "x")) # 输出:Hellx, Wxrld!
print(str.replace("o", "x", 1)) # 输出:Hellx, World!字符串分割与连接
| 方法 | 描述 | 示例 |
|---|---|---|
split(sep, maxsplit) | 按 sep 分割字符串,返回列表 | "Hello World".split() 返回 ["Hello", "World"] |
rsplit(sep, maxsplit) | 从右侧开始按 sep 分割字符串 | "Hello World Hello".rsplit(" ", 1) 返回 ["Hello World", "Hello"] |
splitlines(keepends) | 按换行符分割字符串 | "Hello\nWorld".splitlines() 返回 ["Hello", "World"] |
join(iterable) | 将可迭代对象中的元素用字符串连接 | "-".join(["a", "b", "c"]) 返回 "a-b-c" |
示例:
python
# 字符串分割与连接
str = "Hello, World!"
print(str.split(",")) # 输出:['Hello', ' World!']
print(str.split()) # 输出:['Hello,', 'World!']
# 字符串连接
list = ["Hello", "World", "!"]
print(" ".join(list)) # 输出:Hello World !
print("-".join(list)) # 输出:Hello-World-!字符串判断
| 方法 | 描述 | 示例 |
|---|---|---|
startswith(prefix) | 检查字符串是否以 prefix 开头 | "Hello".startswith("He") 返回 True |
endswith(suffix) | 检查字符串是否以 suffix 结尾 | "Hello".endswith("lo") 返回 True |
isalpha() | 检查字符串是否只包含字母 | "Hello".isalpha() 返回 True |
isdigit() | 检查字符串是否只包含数字 | "123".isdigit() 返回 True |
isalnum() | 检查字符串是否只包含字母和数字 | "Hello123".isalnum() 返回 True |
isspace() | 检查字符串是否只包含空白字符 | " ".isspace() 返回 True |
islower() | 检查字符串是否全为小写 | "hello".islower() 返回 True |
isupper() | 检查字符串是否全为大写 | "HELLO".isupper() 返回 True |
istitle() | 检查字符串是否为标题格式 | "Hello World".istitle() 返回 True |
示例:
python
# 字符串判断
str = "Hello, World!"
print(str.startswith("Hello")) # 输出:True
print(str.endswith("!")) # 输出:True
print(str.isalpha()) # 输出:False(包含逗号和空格)
print("Hello".isalpha()) # 输出:True
print("123".isdigit()) # 输出:True
print("Hello123".isalnum()) # 输出:True
print(" ".isspace()) # 输出:True
print("hello".islower()) # 输出:True
print("HELLO".isupper()) # 输出:True
print("Hello World".istitle()) # 输出:True字符串格式化
| 方法 | 描述 | 示例 |
|---|---|---|
format(*args, **kwargs) | 格式化字符串 | "Hello, {}".format("World") 返回 "Hello, World" |
format_map(mapping) | 使用映射对象格式化字符串 | "Hello, {name}".format_map({"name": "World"}) 返回 "Hello, World" |
示例:
python
# 字符串格式化
# 使用位置参数
print("Hello, {}. You are {} years old.".format("Alice", 30)) # 输出:Hello, Alice. You are 30 years old.
# 使用关键字参数
print("Hello, {name}. You are {age} years old.".format(name="Bob", age=25)) # 输出:Hello, Bob. You are 25 years old.
# 使用索引
print("Hello, {0}. You are {1} years old.".format("Charlie", 35)) # 输出:Hello, Charlie. You are 35 years old.
# 使用 format_map
person = {"name": "David", "age": 40}
print("Hello, {name}. You are {age} years old.".format_map(person)) # 输出:Hello, David. You are 40 years old.
# f-string(Python 3.6+)
name = "Eve"
age = 28
print(f"Hello, {name}. You are {age} years old.") # 输出:Hello, Eve. You are 28 years old.字符串填充
| 方法 | 描述 | 示例 |
|---|---|---|
center(width, fillchar) | 居中填充字符串 | "Hello".center(10, "-") 返回 "--Hello---" |
ljust(width, fillchar) | 左对齐填充字符串 | "Hello".ljust(10, "-") 返回 "Hello-----" |
rjust(width, fillchar) | 右对齐填充字符串 | "Hello".rjust(10, "-") 返回 "-----Hello" |
zfill(width) | 左侧填充零 | "42".zfill(5) 返回 "00042" |
示例:
python
# 字符串填充
str = "Hello"
print(str.center(10, "-")) # 输出:--Hello---
print(str.ljust(10, "-")) # 输出:Hello-----
print(str.rjust(10, "-")) # 输出:-----Hello
print("42".zfill(5)) # 输出:00042
print("-42".zfill(5)) # 输出:-0042字符串去除
| 方法 | 描述 | 示例 |
|---|---|---|
strip(chars) | 去除字符串两端的指定字符 | " Hello ".strip() 返回 "Hello" |
lstrip(chars) | 去除字符串左侧的指定字符 | " Hello ".lstrip() 返回 "Hello " |
rstrip(chars) | 去除字符串右侧的指定字符 | " Hello ".rstrip() 返回 " Hello" |
示例:
python
# 字符串去除
str = " Hello, World! "
print(str.strip()) # 输出:Hello, World!
print(str.lstrip()) # 输出:Hello, World!
print(str.rstrip()) # 输出: Hello, World!
# 去除指定字符
str2 = "###Hello###"
print(str2.strip("#")) # 输出:Hello转义字符
在 Python 中,使用反斜杠 \ 来表示转义字符。
| 转义字符 | 描述 |
|---|---|
\n | 换行 |
\t | 制表符 |
\r | 回车 |
\b | 退格 |
\f | 换页 |
\' | 单引号 |
\" | 双引号 |
\\ | 反斜杠 |
示例:
python
# 转义字符
print("Hello\nWorld") # 输出:Hello
# World
print("Hello\tWorld") # 输出:Hello World
print("Hello\'World\"") # 输出:Hello'World"
print("Hello\\World") # 输出:Hello\World原始字符串
在字符串前加上 r 或 R 可以创建原始字符串,原始字符串中的转义字符不会被处理。
示例:
python
# 原始字符串
print(r"Hello\nWorld") # 输出:Hello\nWorld
print(R"Hello\tWorld") # 输出:Hello\tWorld字符串长度
使用 len() 函数可以获取字符串的长度。
示例:
python
# 字符串长度
str = "Hello, World!"
print(len(str)) # 输出:13字符串比较
可以使用比较运算符来比较字符串。
示例:
python
# 字符串比较
str1 = "Hello"
str2 = "World"
str3 = "Hello"
print(str1 == str3) # 输出:True
print(str1 == str2) # 输出:False
print(str1 < str2) # 输出:True(按字典序比较)
print(str1 > str2) # 输出:False
print(str1 <= str3) # 输出:True
print(str1 >= str2) # 输出:False总结
Python 中的字符串是不可变的序列,提供了丰富的方法来操作字符串。本章节介绍了字符串的创建、访问、修改、方法、转义字符、原始字符串、长度和比较等内容。掌握这些字符串操作对于编写 Python 代码非常重要。