广告

Python 中的 str 是什么?字符串基础详解与常用操作指南

本篇文章围绕 Python 中的 str 是什么?字符串基础详解与常用操作指南 展开,帮助读者理解 str 的本质、创建方式、编码解码以及日常操作。

1. Python 中的 str 是什么?

1.1 基础概念与创建

在 Py3 中,str 是 Python 的文本类型,表示 Unicode 字符序列,而非原始字节。它是一个 不可变对象,一旦创建就不能被修改。这使得多语言文本的处理变得简单且安全。默认编码是 Unicode,在内部以码点序列存储。若需要二进制数据,则使用 bytes 类型。

通过引号创建字符串是最常见的方式,单引号、双引号和三引号都可用。常用的创建方式包括:简单字符串、带换行的多行字符串、以及带变量的格式化字符串

s1 = "Hello, 世界"
s2 = 'Python3'
s3 = """多行
文本"""

1.2 编码与解码

在 Python 3 中,str 与 bytes 是两个不同的类型。要将文本转换为字节序列,需要使用 encode();反之若要从字节还原为文本,需要使用 decode()。编码过程指定编码格式,如 utf-8utf-16 等。

典型示例展示了文本到字节的转换与反向转换的过程:

text = "こんにちは"
b = text.encode("utf-8")     # str -> bytes
t = b.decode("utf-8")        # bytes -> str
print(b)  # b'...'
print(t)  # こんにちは

1.3 常用方法与操作

len() 获取字符数,索引切片支持,返回的新对象仍然是 str

这是一些常用操作的示例,展示了如何访问、切片以及改变内容的常用技巧:

s = "Python 字符串"
print(len(s))       # 输出字符长度
print(s[0])         # 'P'
print(s[1:4])       # 'yth'
new_s = s + "!"     # 拼接(产生新字符串)

2. 字符串的常见操作指南

2.1 拼接与格式化

字符串拼接要遵循高效性原则,不要在循环中直接用“+”逐个拼接大量字符串,而应使用 listjoin()

格式化文本的最佳实践是 f-strings(Python 3.6+),它们在语法上更直观、性能更高,且支持表达式嵌入。

name = "Alice"
age = 30
# 使用 join 拼接
parts = ["Hello","World","from","Alice"]
msg = " ".join(parts)# 使用 f-string 进行格式化
greeting = f"Hello, {name}. You are {age} years old."
print(greeting)

2.2 查找、分割、替换与变换

常用的字符串方法包括 find、rfind、index、count,以及 strip、lstrip、rstrip 进行去空白和修剪。

对文本的变换方面,upper、lower、capitalize、title 可以快速转换大小写,replacesplit 用于分割文本,join 将分割的片段重新拼接。

s = "  Hello World  "
print(s.strip())            # 'Hello World'
print(s.lower())            # '  hello world  '
print(s.replace("World","Python"))  # '  Hello Python  '
parts = s.split()
print(parts)                # ['Hello','World']

2.3 文件读写与编码注意事项

在处理外部文本数据时,应始终明确指定编码,避免出现 UnicodeDecodeError。使用 open 时的 encoding 参数可以设定为 utf-8 或其他编码。

一个常见的工作流是读取文本为 str,再将文本通过 encode() 转为字节写入文件,或直接写入字符串对象。

# 读取文本
with open("data.txt", "r", encoding="utf-8") as f:text = f.read()# 写入文本
with open("out.txt", "w", encoding="utf-8") as f:f.write(text)

2.4 Unicode 规范化与跨语言处理

不同系统可能对同一字符进行不同的编码规范存储,导致看起来相同的文本实际上在代码点上不同。采用 unicodedata.normalize() 进行规范化有助于一致性。

Python 中的 str 是什么?字符串基础详解与常用操作指南

此外,面对跨语言文本时,理解 code pointgrapheme、以及组合字符的概念,是实现稳定文本处理的关键。

import unicodedatas = "e\u0301"  # é 的组合表示
print(s, len(s))  # 'é' 2 个码点n = unicodedata.normalize("NFC", s)
print(n, len(n))  # 'é' 1 个码点

广告

后端开发标签