1.前言
字符串是编程中最常用的数据类型,这章需要针对字符串进行讲解。
字符串的定义:
字符串(英语:string),是由零个或多个字符组成的有限序列。——Wikipedia
python官方文档:https://docs.python.org/zh-cn/3.10/library/stdtypes.html#text-sequence-type-str
字符串是由 Unicode 码位构成的不可变 序列。—— python官方文档
从定义上看,我们知道字符串是零个或多个字符有序且不可变序列。
字符串字面值有多种不同的写法:
- 单引号: ‘允许包含有 “双” 引号’
- 双引号: “允许嵌入 ‘单’ 引号”
- 三重引号: ‘’‘三重单引号’‘’, “”“三重双引号”“”
使用三重引号的字符串可以跨越多行 —— 其中所有的空白字符都将包含在该字符串字面值中。
2.常用的字符串基本操作
在Python中,字符串是一个非常常见的、内置的类型,它支持多种基本操作。以下是一些常用的字符串基本操作:
1. 成员运算符 (in, not in)
- 用来检查一个子字符串是否存在于另一个字符串中。
s = "hello world"
print("hello" in s) # True
print("world" not in s) # False
2. 连接运算符 (+)
- 用于连接两个字符串。
s1 = "hello"
s2 = "world"
result = s1 + " " + s2 # "hello world"
3. 重复运算符 (*)
- 用于重复字符串的内容。
s = "hello"
result = s * 3 # "hellohellohello"
4.索引和切片
- 字符串是有序的,可以使用索引和切片操作。
s = "hello world"
print(s[0]) # 'h',索引从0开始
print(s[-1]) # 'd',负数索引从末尾开始
print(s[0:5]) # 'hello',从0到4的字符
print(s[:5]) # 'hello',从开头到4的字符
print(s[6:]) # 'world',从索引6开始到末尾
print(s[1:5:3]) # 'hello', 从索引1开始,每隔 3 个字符取一个字符
5. 大小写转换
- 字符串可以通过各种方法转换大小写。
s = "Hello World"
print(s.lower()) # "hello world"
print(s.upper()) # "HELLO WORLD"
print(s.title()) # "Hello World"
print(s.swapcase()) # "hELLO wORLD"
6. 去除空白字符 (strip(), lstrip(), rstrip())
- 用来去掉字符串两端的空白字符。
s = " hello world "
print(s.strip()) # "hello world",去掉两边的空格
print(s.lstrip()) # "hello world ",去掉左边的空格
print(s.rstrip()) # " hello world",去掉右边的空格
7. 替换子字符串 (replace())
- 用于替换字符串中的指定子字符串。
s = "hello world"
print(s.replace("world", "Python")) # "hello Python"
8. 分割字符串 (split())
- 用指定分隔符将字符串分割成多个子字符串,返回一个列表。
s = "apple,banana,cherry"
fruits = s.split(",") # ['apple', 'banana', 'cherry']
9. 查找子字符串 (find(), index())
- find()返回子字符串首次出现的位置,如果找不到返回-1;index()也是查找,但如果找不到会抛出异常。
s = "hello world"
print(s.find("world")) # 6
print(s.index("world")) # 6
print(s.find("Python")) # -1
10. 判断字符串类型 (startswith(), endswith())
- 检查字符串是否以某个子字符串开始或结束。
s = "hello world"
print(s.startswith("hello")) # True
print(s.endswith("world")) # True
11. 字符串长度 (len())
- 获取字符串的长度(字符个数)。
s = "hello"
print(len(s)) # 5
12. 字符串格式化 (format(), f-strings)
- 在字符串中插入变量值或表达式。
name = "gaoluchuan"
age = 25
# 使用`format()`
print("My name is {} and I am {} years old.".format(name, age)) # "My name is gaoluchuan and I am 25 years old."
# 使用f-string(Python 3.6+)
print(f"My name is {name} and I am {age} years old.") # "My name is gaoluchuan and I am 25 years old."
13. 字符串对齐 (ljust(), rjust(), center())
- 用指定的字符填充字符串,使其在指定宽度内对齐。
s = "hello"
print(s.ljust(10, "-")) # "hello-----"
print(s.rjust(10, "-")) # "-----hello"
print(s.center(10, "-")) # "--hello---"
14. 字符串转义
- 用反斜杠(\)来转义特殊字符。
s = "Hello\nWorld"
print(s) # "Hello"换行"World"
s2 = "He said, \"Hello!\""
print(s2) # He said, "Hello!"
这些基本操作提供了丰富的字符串处理能力,适用于字符串的查找、替换、格式化、分割、对齐等多种需求。
字符串的操作方法有几十种,除了上面常用的方法,还需要根据官方文档中的每个方法逐个练习。
python官方文档:https://docs.python.org/zh-cn/3.10/library/stdtypes.html#text-sequence-type-str
3.总结
字符串作为最常用的文本数据类型,操作方法确实太多了,如果想学好,没有捷径,就是多练习,还有一个很重要的问题是,把每个str方法的英文语法和语义确保都能看懂,使用中遇到问题可以快速通过查看英文提示进行理解。