1. 字符串基础

字符串是 Python 中的一种不可变数据类型,用于存储文本数据。

  • 创建字符串:可以使用单引号或双引号来创建字符串。
  • 访问字符:通过索引访问字符串中的字符,索引从 0 开始。

2. 字符串方法

Python 字符串对象提供了许多有用的方法,用于字符串的查询、修改和处理。

字符串查询
  • str.find(sub):返回子字符串 sub 在字符串中首次出现的索引。
  • str.index(sub):类似于 find(),但如果子字符串不存在则抛出 ValueError。
  • str.count(sub):返回子字符串在字符串中出现的次数。
  • str.startswith(prefix):检查字符串是否以指定的前缀开始。
  • str.endswith(suffix):检查字符串是否以指定的后缀结束。
字符串修改
  • str.upper():将字符串中的所有字符转换为大写。
  • str.lower():将字符串中的所有字符转换为小写。
  • str.strip():移除字符串两端的空白字符。
  • str.replace(old, new):替换字符串中的旧子字符串为新子字符串。
字符串切片
  • str[start:end]:获取字符串从索引 start 到 end-1 的子字符串。
  • str[start:]:获取字符串从索引 start 到末尾的子字符串。
  • str[:end]:获取字符串从开始到索引 end-1 的子字符串。

3. 字符串格式化

Python 3 提供了多种字符串格式化的方法。

旧式格式化(% 操作符)

name = "张胜男"
age = 30
print("Hello, %s. You are %d years old." % (name, age))
# Hello, 张胜男. You are 30 years old.
  • 1.
  • 2.
  • 3.
  • 4.

str.format() 方法

name = "张胜男"
age = 30
print("Hello, {}. You are {} years old.".format(name, age))
  • 1.
  • 2.
  • 3.
f-string(Python 3.6+)
name = "张胜男"
age = 30
print(f"Hello, {name}. You are {age} years old.")
  • 1.
  • 2.
  • 3.

4. 字符串编码

字符串可以编码为字节序列,反之亦然。

  • str.encode(encoding='utf-8'):将字符串编码为字节序列。
  • bytes.decode(encoding='utf-8'):将字节序列解码为字符串。

5. Unicode 和 ASCII

Python 3 默认使用 Unicode,可以处理多种语言的字符。

  • ord(char):获取单个字符的 Unicode 编码。
  • chr(i):将 Unicode 编码转换为对应的字符。

6. 正则表达式

Python 的 re 模块提供了正则表达式的支持,用于复杂的字符串匹配和处理。

import re

pattern = r"\d+"
result = re.findall(pattern, "有123个苹果和456个橙子")
print(result)  # 输出: ['123', '456']
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

7. 字符串比较

字符串比较是大小写敏感的。

s1 = "hello"
s2 = "Hello"
print(s1 == s2)  # 输出: False
  • 1.
  • 2.
  • 3.

8. 字符串连接

可以使用 + 操作符连接字符串。

s1 = "Hello, "
s2 = "World!"
s3 = s1 + s2
print(s3)  # 输出: Hello, World!
  • 1.
  • 2.
  • 3.
  • 4.

9. 字符串不可变性

字符串是不可变的数据类型,这意味着一旦创建就不能更改。

s = "Hello"
s[0] = "h"  # TypeError: 'str' object does not support item assignment
  • 1.
  • 2.

10. 字符串的内存视图

可以使用 bytes 和 bytearray 来处理二进制数据。

b = bytes([72, 101, 108, 108, 111])  # 等价于 b'Hello'
ba = bytearray(b)
ba[0] = 104  # 修改第一个字符为 'h'
print(ba)  # 输出: bytearray(b'helli')
  • 1.
  • 2.
  • 3.
  • 4.