当前位置: 首页 > news >正文

Python 编程 - 字符串(str)

Python 3 中的字符串(str)是Unicode 字符序列,用于表示文本数据。与 Python 2 不同,Python 3 不再区分 strunicode,所有文本字符串都是 Unicode 原生支持的,这使得处理多语言和特殊符号变得非常自然。下面是关于 Python 3 字符串的全面概览,涵盖创建、操作、格式化、编码等核心内容。


1. 字符串的创建

字符串可以使用单引号、双引号或三引号(多行)定义:

s1 = 'Hello'
s2 = "World"
s3 = '''多行
字符串'''
s4 = """也可用双引号"""

三引号会保留内部的换行和缩进。


2. 转义字符与原始字符串

反斜杠 \ 用于转义特殊字符(如 \n 换行,\t 制表符)。若希望字符串原样输出(例如文件路径、正则表达式),可使用原始字符串,前缀为 r

path = r'C:\Users\name'   # 反斜杠不被转义

3. 字符串是不可变的

字符串一旦创建,不能修改其中的单个字符。任何看似“修改”的操作(如拼接、替换)都会生成新的字符串对象,这在性能和内存方面需要注意。


4. 基本操作

  • 索引s[0] 获取第一个字符,s[-1] 获取最后一个。
  • 切片s[start:end:step] 返回子串(包含 start,不包含 end)。
  • 拼接+' '.join(list)(推荐用 join 拼接多个片段,效率更高)。
  • 重复s * 3
  • 成员检查'a' in s'abc' not in s
  • 长度len(s)

5. 常用方法

Python 字符串提供了丰富的方法,所有方法都返回新字符串(因为不可变):

  • 大小写转换.upper(), .lower(), .capitalize(), .title(), .swapcase()
  • 去除空白.strip()(两侧)、.lstrip().rstrip()
  • 查找与替换.find(sub), .index(sub), .replace(old, new), .count(sub)
  • 条件判断.isalpha(), .isdigit(), .isalnum(), .isspace(), .startswith(prefix), .endswith(suffix)
  • 分割与合并.split(sep) → 列表,.join(iterable) → 字符串(高效拼接)
  • 对齐与填充.center(width), .ljust(), .rjust(), .zfill(width)

示例:

text = "  Hello, World!  "
print(text.strip())          # "Hello, World!"
print(text.split(','))       # ['  Hello', ' World!  ']
print('-'.join(['a','b']))  # 'a-b'

6. 字符串格式化

Python 3 支持多种格式化方式:

  • % 格式化(旧式):

    "Hello, %s!" % "Alice"          # "Hello, Alice!"
    "Age: %d" % 25                  # "Age: 25"
    
  • .format() 方法(推荐在 3.6 之前):

    "Hello, {}!".format("Bob")                # 位置参数
    "Name: {name}, Age: {age}".format(name="Eve", age=30)  # 关键字参数
    
  • f-string(格式化字符串字面量)(Python 3.6+,最推荐):
    在字符串前加 f,直接使用花括号嵌入变量或表达式:

    name = "Charlie"
    age = 28
    print(f"Name: {name}, Age: {age}, Next year: {age+1}")
    

7. 编码与解码(bytesstr 的转换)

  • 字符串在内存中以 Unicode 码点存储,但传输或存储时需要编码为字节序列(如 UTF-8, GBK)。
  • 编码str.encode(encoding='utf-8') → 返回 bytes 对象。
  • 解码bytes.decode(encoding='utf-8') → 返回 str
s = "中文"
b = s.encode('utf-8')      # b'\xe4\xb8\xad\xe6\x96\x87'
s2 = b.decode('utf-8')     # "中文"

Python 3 默认使用 UTF-8 编码,但最好明确指定。


8. Python 2 vs Python 3 的关键区别

  • Python 2 有 str(字节串)和 unicode(文本串),Python 3 统一为 str(Unicode)。
  • Python 2 中 '中' 是字节串,需加 u 前缀表示 Unicode;Python 3 中普通字符串就是 Unicode。
  • Python 3 的 open() 默认以文本模式读写,自动进行编码转换(可通过 encoding 参数控制)。

9. 高级注意事项

  • Unicode 规范化:有些字符(如 é)可由单个码点或组合字符表示,使用 unicodedata.normalize() 可统一形式,便于比较。
  • 字符长度len(s) 返回 Unicode 码点个数,不是字节数。若需要字节长度,需先编码。
  • 内存与性能:由于不可变性,大量字符串拼接会产生临时对象,建议使用 joinio.StringIO
  • 转义 Unicode:可以用 \uXXXX\UXXXXXXXX 表示任意 Unicode 字符。

10. 总结

Python 3 的字符串是强大且易用的 Unicode 文本容器,结合丰富的内置方法和现代格式化工具(f-string),让文本处理变得高效、清晰。理解其不可变性和编码机制是避免常见陷阱的关键。

http://www.jsqmd.com/news/1049504/

相关文章:

  • 外墙防水选购指南:如何选高性价比服务与靠谱公司 - 速递信息
  • 投资机器论
  • 2026年6月宜宾黄金回收口碑推荐:本地人都在去的六家靠谱店 - 天天生活分享日志
  • Apollo Link REST 实战:构建一个完整的电影搜索应用
  • Faster-Whisper:如何实现4倍性能提升的语音识别系统?
  • 上海旧房翻新多少钱一平米?2026年最新价格体系与透明报价品牌推荐 - 优家闲谈
  • 2026年6月全新播报|亨得利正规维修质保范围明细,从百达翡丽到江诗丹顿全覆盖 - 亨得利官方售后
  • 如何在Windows 11上完美运行经典老游戏:DDrawCompat兼容性解决方案终极指南
  • NeuralNote终极指南:5个场景解决音频转MIDI的所有痛点
  • 2026外墙防水领域代表性品牌解析:专业服务选型参考 - 资讯速览
  • 昆明黄金回收鉴定师资质排名:持证vs无证,差距有多大? - charlieruizvin
  • 2026年扬州轻高定全屋定制避坑指南:爱格可丽芙双授权商家盘点 - 设计本
  • 2026年佛山制造业采购经理CPPM培训怎么安排?众智商学院课程内容和费用说明 - 众智商学院官方
  • 深度解析ComfyUI-Impact-Pack架构演进与Switch节点兼容性优化方案
  • 深圳南山泰语培训哪家效果好 - 速递信息
  • 深圳福田雅思培训哪家服务好 - 速递信息
  • vue-element-admin 迁移到 rsbuild v1
  • 3分钟掌握B站缓存视频转换:m4s-converter终极使用教程
  • 劳力士官方授权售后维修中心正式辟谣|2026年6月最新发布:亨得利全国正规售后服务门店+真实消费者对话记录 - 亨得利官方维修中心
  • 微信聊天记录永久保存完整指南:免费工具让数据真正属于你
  • 权威官方公告!萧邦官方售后维修服务网点,售后咨询电话与官方门店完整地址查询 - 速递信息
  • Steam成就管理引擎:高性能游戏数据处理架构深度解析
  • 告别手动分层:用AI智能工具将单张图片秒变专业PSD文件
  • 如何创建文心一言认可的百度百科关键词条?百家号文章快速被 AI 引用的核心技巧 - 速递信息
  • 2026西安钻石首饰回收指南:七家门店4C标准复检与品牌钻饰估价全记录 - 薛定谔的梨花猫
  • 终极Windows风扇智能控制:FanControl专业深度解析指南
  • 把日子过成自己喜欢的样子
  • SGNavigationProgress源码解读:从SGProgressView到分类实现的完整架构
  • 深圳南山葡萄牙语培训哪家值得推荐 - 速递信息
  • XcodeGen终极指南:告别Xcode项目文件合并冲突的终极解决方案