Python字符串常用方法详解

文章目录

  • Python字符串常用方法详解
    • 一、字符串大小写转换方法(常用)
      • 1. 基础大小写转换
      • 2. 案例:验证码检查(不区分大小写)
    • 二、字符串查找与替换方法
      • 1. 查找相关方法
      • 2. 替换相关方法
    • 三、字符串判断方法
      • 1. 内容判断方法
    • 四、字符串分割与连接方法(常用)
      • 1. 分割方法
      • 2. 连接方法
    • 五、字符串修剪与填充方法
      • 1. 修剪方法
      • 2. 填充方法
    • 六、字符串编码解码方法
      • 1. 编码方法
      • 2. 解码方法
    • 七、字符串格式化方法
      • 1. 旧式格式化
      • 2. format方法
      • 3. f-string (Python 3.6+)
    • 八、实际应用案例
      • 案例1:文本分析工具
      • 案例2:密码生成器
    • 九、总结

Python字符串常用方法详解

字符串方法是Python编程中最常用的工具之一,它们就像字符串的"瑞士军刀",能帮你完成各种文本处理任务。下面我将用通俗易懂的方式,结合大量代码示例,详细讲解Python字符串的常用方法。

一、字符串大小写转换方法(常用)

1. 基础大小写转换

方法作用示例结果
upper()全转大写"hello".upper()"HELLO"
lower()全转小写"HELLO".lower()"hello"
capitalize()首字母大写"hello".capitalize()"Hello"
title()每个单词首字母大写"hello world".title()"Hello World"
swapcase()大小写互换"PyThOn".swapcase()"pYtHoN"
# 实际应用:用户名规范化
username = "jOhN dOe"
normalized = username.title()  # 转为"John Doe"
print(f"欢迎, {normalized}!")

2. 案例:验证码检查(不区分大小写)

user_input = "AbCd"
correct_code = "aBcD"if user_input.lower() == correct_code.lower():print("验证码正确")
else:print("验证码错误")

二、字符串查找与替换方法

1. 查找相关方法

方法作用示例结果
find(sub)查找子串位置"apple".find("p")1
rfind(sub)从右查找子串"apple".rfind("p")2
index(sub)类似find但找不到会报错"apple".index("p")1
rindex(sub)从右查找,找不到报错"apple".rindex("p")2
count(sub)统计出现次数"banana".count("a")3
# 查找文件扩展名
filename = "report.pdf"
dot_index = filename.rfind(".")
if dot_index != -1:ext = filename[dot_index+1:]print(f"文件扩展名: {ext}")

2. 替换相关方法

方法作用示例结果
replace(old, new)替换子串"hello".replace("l", "L")"heLLo"
expandtabs(tabsize)替换tab为空格"a\tb".expandtabs(4)"a b"
# 敏感词过滤
text = "这个产品太垃圾了!"
bad_words = ["垃圾", "废物", "差劲"]
for word in bad_words:text = text.replace(word, "**")
print(text)  # 输出: "这个产品太**了!"

三、字符串判断方法

1. 内容判断方法

方法作用示例结果
startswith(prefix)是否以某子串开头"hello".startswith("he")True
endswith(suffix)是否以某子串结尾"world".endswith("ld")True
isalnum()是否字母或数字"abc123".isalnum()True
isalpha()是否全为字母"abc".isalpha()True
isdigit()是否全为数字"123".isdigit()True
isnumeric()是否数字字符"Ⅷ".isnumeric()True
isdecimal()是否十进制数字"12".isdecimal()True
isspace()是否全为空白字符" ".isspace()True
islower()是否全小写"hello".islower()True
isupper()是否全大写"HELLO".isupper()True
istitle()是否标题化(首字母大写)"Hello".istitle()True
# 密码强度验证
password = "Passw0rd!"
has_upper = any(c.isupper() for c in password)
has_lower = any(c.islower() for c in password)
has_digit = any(c.isdigit() for c in password)
has_special = any(not c.isalnum() for c in password)print(f"密码强度: {has_upper and has_lower and has_digit and has_special}")

四、字符串分割与连接方法(常用)

1. 分割方法

方法作用示例结果
split(sep)按分隔符分割"a,b,c".split(",")['a', 'b', 'c']
rsplit(sep)从右开始分割"a,b,c".rsplit(",", 1)['a,b', 'c']
splitlines()按行分割"第一行\n第二行".splitlines()['第一行', '第二行']
partition(sep)分成三部分"hello.world".partition(".")('hello', '.', 'world')
rpartition(sep)从右分成三部分"hello.world.py".rpartition(".")('hello.world', '.', 'py')
# 解析URL参数
url = "https://example.com?name=John&age=25"
_, params = url.split("?", 1)  # 分割一次
params_dict = dict(p.split("=") for p in params.split("&"))
print(params_dict)  # 输出: {'name': 'John', 'age': '25'}

2. 连接方法

方法作用示例结果
join(iterable)连接字符串序列",".join(["a","b","c"])"a,b,c"
# 路径拼接
parts = ["C:", "Users", "John", "Documents"]
path = "\\".join(parts)  # Windows路径
print(path)  # 输出: C:\Users\John\Documents

五、字符串修剪与填充方法

1. 修剪方法

方法作用示例结果
strip()去除两端空白" hi ".strip()"hi"
lstrip()去除左端空白" hi ".lstrip()"hi "
rstrip()去除右端空白" hi ".rstrip()" hi"
# 清理用户输入
user_input = "  admin@example.com  "
clean_input = user_input.strip()
print(f"清理后: '{clean_input}'")  # 输出: 'admin@example.com'

2. 填充方法

方法作用示例结果
center(width)居中填充"hi".center(10)" hi "
ljust(width)左对齐填充"hi".ljust(5)"hi "
rjust(width)右对齐填充"hi".rjust(5)" hi"
zfill(width)用0填充"42".zfill(5)"00042"
# 生成表格格式
products = [("苹果", 5.5), ("香蕉", 3.2), ("橙子", 4.8)]
for name, price in products:print(f"{name.ljust(6)}: {str(price).rjust(5)}元")# 输出:
# 苹果  :   5.5元
# 香蕉  :   3.2元
# 橙子  :   4.8元

六、字符串编码解码方法

1. 编码方法

方法作用示例结果
encode()转为字节序列"你好".encode("utf-8")b'\xe4\xbd\xa0\xe5\xa5\xbd'

2. 解码方法

方法作用示例结果
decode()字节转字符串b'\xe4\xbd\xa0\xe5\xa5\xbd'.decode("utf-8")"你好"
# 处理不同编码的文本
text = "中文测试"
bytes_gbk = text.encode("gbk")  # 转为GBK编码
bytes_utf8 = text.encode("utf-8")  # 转为UTF-8编码print(f"GBK编码: {bytes_gbk}")
print(f"UTF-8编码: {bytes_utf8}")# 解码回字符串
print(bytes_gbk.decode("gbk"))  # 输出: 中文测试

七、字符串格式化方法

1. 旧式格式化

# %s 字符串, %d 整数, %f 浮点数
template = "姓名: %s, 年龄: %d, 工资: %.2f"
result = template % ("张三", 30, 8500.5)
print(result)  # 输出: 姓名: 张三, 年龄: 30, 工资: 8500.50

2. format方法

# 位置参数
"{}的{}成绩是{}".format("张三", "数学", 95)# 命名参数
"{name}的{subject}成绩是{score}".format(name="李四", subject="英语", score=88
)# 数字格式化
"圆周率: {:.2f}".format(3.1415926)  # 输出: 圆周率: 3.14
"金额: {:,}".format(1234567)  # 输出: 金额: 1,234,567

3. f-string (Python 3.6+)

name = "王五"
age = 25
salary = 12000.5# 基础用法
f"{name}今年{age}岁"# 表达式计算
f"明年{name}{age + 1}岁了"# 数字格式化
f"工资: {salary:,.2f}元"  # 输出: 工资: 12,000.50元# 对齐
f"姓名: {name:<10} 年龄: {age:>5}"  # 左对齐和右对齐

八、实际应用案例

案例1:文本分析工具

def analyze_text(text):# 统计字符数char_count = len(text)# 统计单词数word_count = len(text.split())# 统计句子数(简单版)sentence_count = text.count('.') + text.count('!') + text.count('?')# 找出最长单词words = text.replace(',', '').replace('.', '').split()longest_word = max(words, key=len) if words else ""return {"字符数": char_count,"单词数": word_count,"句子数": sentence_count,"最长单词": longest_word}result = analyze_text("Hello, world! This is a test.")
print(result)
# 输出: {'字符数': 25, '单词数': 5, '句子数': 2, '最长单词': 'Hello'}

案例2:密码生成器

import random
import stringdef generate_password(length=12):# 定义字符集lowercase = string.ascii_lowercaseuppercase = string.ascii_uppercasedigits = string.digitssymbols = "!@#$%^&*"# 确保每种类型至少一个字符password = [random.choice(lowercase),random.choice(uppercase),random.choice(digits),random.choice(symbols)]# 填充剩余长度all_chars = lowercase + uppercase + digits + symbolspassword.extend(random.choice(all_chars) for _ in range(length - 4))# 打乱顺序random.shuffle(password)return ''.join(password)print(f"生成密码: {generate_password()}")
# 示例输出: 生成密码: pA7^hK9$m2Lb

九、总结

Python字符串方法核心要点:

  1. 大小写转换upper(), lower(), title(), capitalize()
  2. 查找替换find(), index(), count(), replace()
  3. 内容判断startswith(), isdigit(), isalpha(), isalnum()
  4. 分割连接split(), join(), partition()
  5. 修剪填充strip(), ljust(), center(), zfill()
  6. 格式化format(), f-string
  7. 编码解码encode(), decode()

掌握这些字符串方法,你就能高效处理各种文本操作任务,从简单的字符串处理到复杂的数据清洗都能游刃有余!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/81289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis—动态 SQL

MyBatis—动态 SQL 一、动态 SQL 的核心作用 动态 SQL 主要解决以下问题&#xff1a; 灵活性&#xff1a;根据不同的输入参数生成不同的 SQL 语句&#xff08;如条件查询、批量操作&#xff09;。 可维护性&#xff1a;减少重复代码&#xff0c;通过标签化逻辑提高 SQL 可读…

Python机器学习笔记(二十五、算法链与管道)

对于许多机器学习算法,特定数据表示非常重要。首先对数据进行缩放,然后手动合并特征,再利用无监督机器学习来学习特征。因此,大多数机器学习应用不仅需要应用单个算法,而且还需要将许多不同的处理步骤和机器学习模型链接在一起。Pipeline类可以用来简化构建变换和模型链的…

YOLOv3深度解析:多尺度特征融合与实时检测的里程碑

一、YOLOv3的诞生&#xff1a;继承与突破的起点 YOLOv3作为YOLO系列的第三代算法&#xff0c;于2018年由Joseph Redmon等人提出。它在YOLOv2的基础上&#xff0c;针对小目标检测精度低、多类别标签预测受限等问题进行了系统性改进。通过引入多尺度特征图检测、残差网络架构和独…

已解决(亲测有效!):安装部署Docker Deskpot之后启动出现Docker Engine Stopped!

文章目录 已解决&#xff1a;安装部署Docker Deskpot之后启动出现Docker Engine Stopped&#xff01;个人环境介绍自己的解决问题思路&#xff08;详细过程附截图&#xff09;1.打开控制面板2.点击程序和功能3.点击启动或关闭windows功能4.Hyper-V5.右键菜单栏的windows图标点击…

PCIE接收端检测机制分析

PCIE接收端检测机制分析 1、PCIE的接收端检测机制 接收器检测电路作为发射器的一部分实现&#xff0c;必须正确检测是否存在与ZRX-DC参数&#xff08;40Ω-60Ω&#xff09;隐含的直流阻抗等效的负载阻抗。 接收器检测序列的推荐行为如下&#xff1a; ‌初始状态‌&#xff…

[模型部署] 3. 性能优化

&#x1f44b; 你好&#xff01;这里有实用干货与深度分享✨✨ 若有帮助&#xff0c;欢迎&#xff1a;​ &#x1f44d; 点赞 | ⭐ 收藏 | &#x1f4ac; 评论 | ➕ 关注 &#xff0c;解锁更多精彩&#xff01;​ &#x1f4c1; 收藏专栏即可第一时间获取最新推送&#x1f514;…

InternVL3: 利用AI处理文本、图像、视频、OCR和数据分析

InternVL3推动了视觉-语言理解、推理和感知的边界。 在其前身InternVL 2.5的基础上,这个新版本引入了工具使用、GUI代理操作、3D视觉和工业图像分析方面的突破性能力。 让我们来分析一下是什么让InternVL3成为游戏规则的改变者 — 以及今天你如何开始尝试使用它。 InternVL…

鸿蒙 ArkUI - ArkTS 组件 官方 UI组件 合集

ArkUI 组件速查表 鸿蒙应用开发页面上需要实现的 UI 功能组件如果在这 100 多个组件里都找不到&#xff0c;那就需要组合造轮子了 使用技巧&#xff1a;先判断需要实现的组件大方向&#xff0c;比如“选择”、“文本”、“信息”等&#xff0c;或者是某种形状比如“块”、“图…

HTTP GET报文解读

考虑当浏览器发送一个HTTP GET报文时&#xff0c;通过Wireshark 俘获到下列ASCII字符串&#xff1a; GET /cs453/index.html HTTP/1.1 Host: gaia.cs.umass.edu User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax) Acc…

【Linux网络】数据链路层

数据链路层 用于两个设备&#xff08;同一种数据链路节点&#xff09;之间进行传递。 认识以太网 “以太网” 不是一种具体的网络&#xff0c;而是一种技术标准&#xff1b;既包含了数据链路层的内容&#xff0c;也包含了一些物理层的内容。例如&#xff1a;规定了网络拓扑结…

【打破信息差】萌新认识与入门算法竞赛

阅前须知 XCPC萌新互助进步群2️⃣&#xff1a;174495261 博客主页&#xff1a;resot (关注resot谢谢喵) 针对具体问题&#xff0c;应当进行具体分析&#xff1b;并无放之四海而皆准的方法可适用于所有人。本人尊重并支持每位学习者对最佳学习路径的自主选择。本篇所列训练方…

logrotate按文件大小进行日志切割

✅ 编写logrotate文件&#xff0c;进行自定义切割方式 adminip-127-0-0-1:/data/test$ cat /etc/logrotate.d/test /data/test/test.log {size 1024M #文件达到1G就切割rotate 100 #保留100个文件compressdelaycompressmissingoknotifemptycopytruncate #这个情况服务不用…

2025认证杯二阶段C题完整论文讲解+多模型对比

基于延迟估计与多模型预测的化工生产过程不合格事件预警方法研究 摘要 化工生产过程中&#xff0c;污染物浓度如SO₂和H₂S对生产过程的控制至关重要。本文旨在通过数据分析与模型预测&#xff0c;提出一种基于延迟估计与特征提取的多模型预测方法&#xff0c;优化阈值设置&a…

前端精度问题全解析:用“挖掘机”快速“填平精度坑”的完美解决方案

写在前面 “为什么我的计算在 React Native 中总是出现奇怪的精度问题?” —— 这可能是许多开发者在作前端程序猿的朋友们都会遇到的第一个头疼问题。本文将深入探讨前端精度问题的根源,我将以RN为例,并提供一系列实用解决方案,让你的应用告别计算误差。 一、精度问题的…

2024 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛) 解题报告 | 珂学家

前言 题解 2024 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛)。 国赛比省赛难一些&#xff0c;做得汗流浃背&#xff0c;T_T. RC-u1 大家一起查作弊 分值: 15分 这题真的太有意思&#xff0c;看看描述 在今年的睿抗比赛上&#xff0c;有同学的提交代码如下&#xff1…

hghac和hgproxy版本升级相关操作和注意事项

文章目录 环境文档用途详细信息 环境 系统平台&#xff1a;N/A 版本&#xff1a;4.5.6,4.5.7,4.5.8 文档用途 本文档用于高可用集群环境中hghac组件和hgproxy组件替换和升级操作 详细信息 1.关闭服务 所有数据节点都执行 1、关闭hgproxy服务 [roothgdb01 tools]# system…

userfaultfd内核线程D状态问题排查

问题现象 运维反应机器上出现了很多D状态进程&#xff0c;也kill不掉,然后将现场保留下来进行排查。 排查过程 都是内核线程&#xff0c;先看下内核栈D在哪了&#xff0c;发现D在了userfaultfd的pagefault流程。 uffd知识补充 uffd探究 uffd在firecracker与e2b的架构下使…

深入解析:构建高性能异步HTTP客户端的工程实践

一、架构设计原理与核心优势 HTTP/2多路复用技术的本质是通过单一的TCP连接并行处理多个请求/响应流&#xff0c;突破了HTTP/1.1的队头阻塞限制。在异步编程模型下&#xff0c;这种特性与事件循环机制完美结合&#xff0c;形成了高性能网络通信的黄金组合。相较于传统同步客户…

根据台账批量制作个人表

1. 前期材料准备 1&#xff09;要有 人员总的信息台账 2&#xff09;要有 个人明白卡模板 2. 开始操作 1&#xff09;打开 人员总的信息台账&#xff0c;选择所需要的数据模块&#xff1b; 2&#xff09;点击插入&#xff0c;选择数据透视表&#xff0c;按流程操作&…

《AI大模型应知应会100篇》第65篇:基于大模型的文档问答系统实现

第65篇&#xff1a;基于大模型的文档问答系统实现 &#x1f4da; 摘要&#xff1a;本文详解如何构建一个基于大语言模型&#xff08;LLM&#xff09;的文档问答系统&#xff0c;支持用户上传 PDF 或 Word 文档&#xff0c;并根据其内容进行智能问答。从文档解析、向量化、存储到…