Skip to content

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

原始字符串

在字符串前加上 rR 可以创建原始字符串,原始字符串中的转义字符不会被处理。

示例:

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 代码非常重要。