Skip to content

字符串

在 Python 中,字符串类型 (str) 是用于存储和处理文本数据的一种基本数据类型。它由一系列字符组成,可以包含字母、数字、符号、空格等。

字符串的创建

使用引号创建字符串。

  • 单引号:'Hello, world!'
  • 双引号:"Hello, world!"
  • 三引号:"""This is a multiline string.""" 用于创建多行字符串,可以包含换行符和缩进。
Python
strA = 'Hello world'
strB = "Hello world"
strC = """This is a 
multiline string"""

字符串的本质

  • 字符串是不可变的,这意味着一旦创建了一个字符串,就不能直接修改它的内容。如果需要修改,只能创建一个新的字符串。
  • 字符串是序列类型,这意味着可以像访问列表元素一样访问字符串中的单个字符。
python
my_string = "Hello"

# 尝试修改字符串中的第一个字符为 'J'
my_string[0] = 'J'

# 运行这段代码会报错:TypeError: 'str' object does not support item assignment

# 因为字符串是不可变的,所以无法直接修改它里面的字符。
# 如果想修改,你需要创建一个新的字符串。
new_string = 'J' + my_string[1:] 
print(new_string)  # 输出:Jello

这可能看起来有些奇怪,但这种不可变性带来的好处是:

  • 安全性: 因为字符串不可变,所以在多线程环境中使用字符串时,可以保证多个线程不会互相干扰。
  • 效率: 字符串的不可变性可以让 Python 更好地优化字符串操作,比如使用缓存技术。

字符串的常用操作

字符访问

  • 使用索引访问单个字符,从 0 开始计数,第一个字符的索引为 0。
  • 可以使用负数索引访问从末尾开始的字符,最后一个字符的索引为 -1。
python
my_string = "Hello"
print(my_string[0])  # 输出:H
print(my_string[-1]) # 输出:o

字符串切片

使用切片操作可以提取字符串的子串,格式为:string[start:end:step],其中:

  • start: 切片的起始索引,默认为 0。
  • end: 切片的结束索引,不包含该索引处的字符。默认为字符串的长度。
  • step: 切片的步长,默认为 1,表示每个字符都包含在切片中。
python
my_string = "Hello, world!"
print(my_string[7:12])  # 输出:world
print(my_string[:5])    # 输出:Hello
print(my_string[::2])   # 输出:Hlo,wrld!

字符串拼接

  • 使用 + 运算符可以拼接两个或多个字符串。
  • 使用 join() 方法可以将一个列表或元组中的元素拼接成一个字符串,并用指定的字符作为分隔符。
python
first_name = "Alice"
last_name = "Smith"
full_name = first_name + " " + last_name  
print(full_name)          # 输出:Alice Smith
names = ["Alice", "Bob", "Charlie"]
names_string = ", ".join(names)           
print(names_string)       # 输出:Alice, Bob, Charlie

字符串重复

使用 * 运算符可以重复字符串。

python
my_string = "Hello"
repeated_string = my_string * 3  
print(repeated_string)      # 输出:HelloHelloHello

字符串格式化

  • 使用 format() 方法可以将字符串中的占位符替换为实际的值。
  • 可以使用 f-string 语法进行格式化,语法更简洁。
python
name = "Alice"
age = 30
print("My name is {}, and I am {} years old.".format(name, age))  # 输出:My name is Alice, and I am 30 years old.
print(f"My name is {name}, and I am {age} years old.")            # 输出:My name is Alice, and I am 30 years old.

字符串常用方法

Python 提供了丰富的字符串方法,可以方便地操作字符串。

方法描述示例
upper()将字符串转换为大写my_string.upper()
lower()将字符串转换为小写my_string.lower()
capitalize()将字符串首字母大写my_string.capitalize()
title()将字符串每个单词的首字母大写my_string.title()
strip()去除字符串首尾空格my_string.strip()
replace(old, new)替换字符串中的字符my_string.replace(" ", "_")
split(sep)将字符串按照分隔符分割成列表my_string.split(",")
join(iterable)将列表或元组中的元素拼接成字符串", ".join(names)
find(substring)查找子串在字符串中的位置my_string.find("world")
count(substring)统计子串在字符串中出现的次数my_string.count("l")
startswith(prefix)判断字符串是否以指定前缀开头my_string.startswith("Hello")
endswith(suffix)判断字符串是否以指定后缀结尾my_string.endswith(".txt")
isdigit()判断字符串是否只包含数字my_string.isdigit()
isalpha()判断字符串是否只包含字母my_string.isalpha()
isalnum()判断字符串是否只包含字母或数字my_string.isalnum()
islower()判断字符串是否全部是小写字母my_string.islower()
isupper()判断字符串是否全部是大写字母my_string.isupper()

注意事项

  • 字符串是不可变的,因此无法直接修改字符串的内容。
  • 可以使用字符串方法来创建新的字符串,并将其赋值给新的变量。
  • 当需要对字符串进行大量操作时,可以考虑使用字符串缓冲区 (buffer) 来提高效率,字符串缓冲区需要使用类库 io,后续再介绍。

总结

字符串是 Python 中非常重要的数据类型,它提供了丰富的功能和操作方法,能够满足各种文本处理需求。 掌握字符串的常用操作和方法,将有助于你编写更加高效、灵活的 Python 代码。

Released under the MIT License.