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

python基础入门:2.3字符串高级操作

字符串高级操作

1. 字符串格式化技巧

1.1 f-string(Python 3.6+)

基础用法

name = "Alice"
age = 25
print(f"{name}今年{age}岁")  # Alice今年25岁

高级格式控制

pi = 3.1415926
# 保留两位小数
print(f"圆周率:{pi:.2f}")       # 圆周率:3.14  
# 十六进制转换
print(f"255的十六进制:{255:#x}")  # 255的十六进制:0xff  
# 千位分隔符
print(f"{1000000:_}")          # 1_000_000

1.2 format方法

位置参数与关键字参数

# 顺序传参
print("{}的{}成绩是{}".format("小明", "数学", 95)) 

# 关键字参数
print("{name}的{subject}成绩是{score}".format(
    name="小红", 
    subject="物理",
    score=88
))

格式规范

# 对齐与填充
print("{:*^20}".format("居中"))  # ********居中********
# 科学计数法
print("{:.2e}".format(0.001234)) # 1.23e-03
# 类型转换
print("{!r}".format("带引号"))    # '带引号'

格式化方式对比

特性f-stringformat
可读性
版本要求Python 3.6+Python 2.6+
表达式内运算支持不支持
局部变量访问直接访问需传参
动态格式字符串受限灵活支持

2. 切片操作与核心方法

2.1 切片操作

基本语法

text = "Python编程指南"

print(text[2:5])    # tho(索引2到4)
print(text[:3])     # Pyt(从头到索引2)
print(text[6:])     # 编程指南(索引6到末尾)
print(text[-3:])    # 南(最后三个字符)
print(text[::2])    # Pto编南(步长2)

索引示意图

P
y
t
h
o
n

2.2 核心字符串方法

split与join

# 分割与重组
csv_data = "apple,banana,cherry"
fruits = csv_data.split(",")  # ['apple', 'banana', 'cherry']
new_str = "|".join(fruits)    # apple|banana|cherry

# 多分隔符分割(正则表达式)
import re
text = "苹果;香蕉,橘子"
print(re.split(r"[;,\s]+", text))  # ['苹果', '香蕉', '橘子']

strip清理

user_input = "   admin@example.com  \t\n"
clean_email = user_input.strip()  # admin@example.com

# 定向清理
text = "==重要通知=="
print(text.strip("="))  # 重要通知

其他实用方法

# 判断前缀/后缀
filename = "report.pdf"
print(filename.endswith(".pdf"))  # True

# 替换内容
sentence = "我喜欢Java"
print(sentence.replace("Java", "Python"))  # 我喜欢Python

# 查找定位
text = "寻找子串位置"
index = text.find("子串")  # 3(找不到返回-1)

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

3.1 常用转义字符

转义符说明示例
\n换行符print(“第1行\n第2行”)
\t制表符“姓名\t年龄”
\\反斜杠“C:\Users”
\'单引号‘I’m here’
\x十六进制字符“\x41” → ‘A’

3.2 原始字符串应用

禁用转义处理

# 常规字符串
path = "C:\\Users\\Documents\\file.txt"  # 需要双反斜杠

# 原始字符串
path = r"C:\Users\Documents\file.txt"    # 自动处理反斜杠

正则表达式场景

import re
pattern = r"\d{3}-\d{4}"  # 匹配000-0000格式
text = "电话:123-4567"
re.findall(pattern, text)  # ['123-4567']

多行字符串处理

# 三引号保持格式
sql = r"""
SELECT * 
FROM users 
WHERE age > 18
"""

4. 常见问题与解决方案

问题1:切片越界处理

text = "Python"
print(text[2:10])   # 自动截断 → 'thon'
print(text[-10:2])  # 返回空字符串

问题2:格式化类型错误

# 错误示例
price = 99.5
print(f"价格:{price:d}")  # ValueError: Unknown format code 'd'

# 正确转换
print(f"价格:{int(price)}元")  # 价格:99元

问题3:转义符意外生效

# 错误路径写法
print("新建文件夹\note")  # \n被识别为换行

# 正确方案
print(r"新建文件夹\note")  # 原始字符串

5. 性能优化建议

  1. 字符串拼接
# 低效写法(每次拼接创建新对象)
result = ""
for s in ["a", "b", "c"]:
    result += s

# 高效写法
parts = []
for s in ["a", "b", "c"]:
    parts.append(s)
result = "".join(parts)
  1. 预编译正则表达式
import re
pattern = re.compile(r"\d+")  # 预编译
data = "abc123def456"
pattern.findall(data)  # ['123', '456']

下节预告:我们将深入探讨Python的列表与元组操作,并通过实现一个高效的数据过滤系统来实践容器类型的高级用法。


http://www.kler.cn/a/534968.html

相关文章:

  • 【ABB阀门定位器EDP300如何进行自整定】
  • 深度整理总结MySQL——SQL的执行顺序和流程
  • GNN多任务预测模型实现(二):将EXCEL数据转换为图数据
  • 【3】高并发导出场景下,服务器性能瓶颈优化方案-文件压缩
  • Ubuntu 20.04配置网络
  • PostgreSQL证书什么样子的?
  • 自由学习记录(34)
  • 深入浅出 DeepSeek V2 高效的MoE语言模型
  • 2.6学习总结
  • 概念AIGC
  • 56. Uboot移植实验
  • 【银河麒麟高级服务器操作系统】系统日志Call trace现象分析及处理全流程
  • Redis持久化-秒杀系统设计
  • flappy-bird-gymnasium
  • 【Linux系统】线程:线程的优点 / 缺点 / 超线程技术 / 异常 / 用途
  • 深入理解 Unix Shell 管道 Pipes:基础和高级用法 xargs tee awk sed等(中英双语)
  • 第二节 程序设计的基本结构
  • 无人机在铁路隧道检查应用技术详解
  • DeepSeek之python实现API应用
  • 【LLM运用】在Ubuntu上Cosyvoice的部署
  • java异常分类,异常处理,面试中常见异常问题!
  • Java并发面试题(题目来源JavaGuide)
  • 算法设计与分析三级项目--管道铺设系统
  • css-根据不同后端返回值返回渲染不同的div样式以及公共组件设定
  • Spring JDBC模块解析 -深入SqlParameterSource
  • 论文解读 | NeurIPS'24 Spotlight ChronoMagic-Bench 评估文本到视频生成的质变幅度评估基准...