Python字符串常用内置函数详解
文章目录
- Python字符串常用内置函数详解
- 一、基础字符串函数
- 1. `len()` - 获取字符串长度
- 2. `ord()` - 获取字符的Unicode码点
- 3. `chr()` - 通过Unicode码点获取字符
- 4. `ascii()` - 获取字符的ASCII表示
- 二、类型转换函数
- 1. `str()` - 将对象转为字符串
- 2. `repr()` - 获取对象的官方字符串表示
- 三、格式化函数
- 1. `format()` - 高级字符串格式化
- 2. `bytes()` - 创建字节串
- 3. `bytearray()` - 创建可变字节数组
- 四、高级字符串函数
- 1. `eval()` - 执行字符串中的表达式
- 2. `exec()` - 执行字符串中的代码
- 3. `hash()` - 获取字符串的哈希值
- 五、输入输出函数
- 1. `input()` - 获取用户输入(返回字符串)
- 2. `print()` - 输出字符串
- 六、字符串编码函数
- 1. `open()` - 文件操作(与字符串密切相关)
- 七、实际应用案例
- 案例1:生成随机密码
- 案例2:简单计算器
- 案例3:字符串加密
- 八、函数对比表
- 九、注意事项
- 十、总结
Python字符串常用内置函数详解
除了字符串方法外,Python还提供了一些强大的内置函数来处理字符串。这些函数就像是Python的"工具箱",能帮你完成各种字符串操作任务。下面我将详细讲解这些函数的使用方法和实际应用。
一、基础字符串函数
1. len()
- 获取字符串长度
text = "Hello, 世界"
length = len(text) # 返回字符数(注意:中文每个字符算1个长度)
print(length) # 输出: 8 (H,e,l,l,o,,, ,世,界)
2. ord()
- 获取字符的Unicode码点
print(ord("A")) # 输出: 65
print(ord("中")) # 输出: 20013
3. chr()
- 通过Unicode码点获取字符
print(chr(65)) # 输出: A
print(chr(20013)) # 输出: 中
4. ascii()
- 获取字符的ASCII表示
print(ascii("A")) # 输出: 'A'
print(ascii("中")) # 输出: '\u4e2d'
二、类型转换函数
1. str()
- 将对象转为字符串
可以将其他类型的数据转为字符串
num = 42
pi = 3.14159
lst = [1, 2, 3]print(str(num)) # 输出: "42"
print(str(pi)) # 输出: "3.14159"
print(str(lst)) # 输出: "[1, 2, 3]"
2. repr()
- 获取对象的官方字符串表示
原样输出字符串的内容
text = "Hello\nWorld"
print(str(text)) # 输出: Hello# World
print(repr(text)) # 输出: 'Hello\nWorld'
三、格式化函数
1. format()
- 高级字符串格式化
# 位置参数
print(format(3.1415926, ".2f")) # 输出: 3.14# 千分位分隔
print(format(1234567, ",")) # 输出: 1,234,567print("{}的{}成绩是{}".format("张三", "数学", 95))
# 输出: 张三的数学成绩是95# 进制转换
print(format(255, "x")) # 十六进制: ff
print(format(255, "b")) # 二进制: 11111111
2. bytes()
- 创建字节串
byte_data = bytes("你好", encoding="utf-8")
print(byte_data) # 输出: b'\xe4\xbd\xa0\xe5\xa5\xbd'
3. bytearray()
- 创建可变字节数组
ba = bytearray("ABC", encoding="ascii")
ba[0] = 88 # 可以修改
print(ba) # 输出: bytearray(b'XBC')
四、高级字符串函数
1. eval()
- 执行字符串中的表达式
result = eval("3 + 4 * 2")
print(result) # 输出: 11# 注意: eval有安全风险,不要执行不可信的字符串
2. exec()
- 执行字符串中的代码
code = """
for i in range(3):print(i)
"""
exec(code)
# 输出:
# 0
# 1
# 2
3. hash()
- 获取字符串的哈希值
print(hash("hello")) # 输出: 一个整数哈希值
五、输入输出函数
1. input()
- 获取用户输入(返回字符串)
name = input("请输入你的名字: ")
print(f"你好, {name}!")
2. print()
- 输出字符串
# 基本用法
print("Hello", "World") # 输出: Hello World# 自定义分隔符
print("2023", "08", "15", sep="-") # 输出: 2023-08-15# 自定义结束符
print("Loading", end="...") # 输出: Loading... (不换行)
六、字符串编码函数
1. open()
- 文件操作(与字符串密切相关)
# 写入字符串到文件
with open("test.txt", "w", encoding="utf-8") as f:f.write("这是一段测试文本")# 从文件读取字符串
with open("test.txt", "r", encoding="utf-8") as f:content = f.read()print(content) # 输出: 这是一段测试文本
七、实际应用案例
案例1:生成随机密码
import randomdef generate_password(length=10):chars = []for _ in range(length):# 随机选择ASCII码33-126之间的可打印字符chars.append(chr(random.randint(33, 126)))return ''.join(chars)print(generate_password()) # 示例输出: `7J$kP9@qL!
案例2:简单计算器
def simple_calculator():while True:expr = input("请输入表达式(输入q退出): ")if expr.lower() == 'q':breaktry:result = eval(expr) # 注意: 实际应用中应该用更安全的方式print(f"结果: {result}")except:print("无效的表达式")simple_calculator()
案例3:字符串加密
def caesar_cipher(text, shift):result = []for char in text:if char.isalpha():# 处理字母字符base = ord('A') if char.isupper() else ord('a')shifted = (ord(char) - base + shift) % 26 + baseresult.append(chr(shifted))else:# 非字母字符保持不变result.append(char)return ''.join(result)# 加密
encrypted = caesar_cipher("Hello, World!", 3)
print(encrypted) # 输出: Khoor, Zruog!# 解密
decrypted = caesar_cipher(encrypted, -3)
print(decrypted) # 输出: Hello, World!
八、函数对比表
函数 | 作用 | 示例 | 返回值 |
---|---|---|---|
len() | 获取长度 | len("abc") | 3 |
ord() | 字符转Unicode | ord("A") | 65 |
chr() | Unicode转字符 | chr(65) | ‘A’ |
str() | 转为字符串 | str(3.14) | ‘3.14’ |
repr() | 官方字符串表示 | repr("a\nb") | “‘a\nb’” |
format() | 高级格式化 | format(3.1415, ".2f") | ‘3.14’ |
eval() | 执行表达式 | eval("3+4") | 7 |
hash() | 计算哈希值 | hash("hello") | 整数 |
九、注意事项
- 安全风险:
eval()
和exec()
可以执行任意代码,不要用于处理用户输入 - 编码问题:处理文件时总是明确指定编码(如
encoding="utf-8"
) - 性能考虑:大量字符串操作时考虑使用
join()
而非+
- 不可变性:字符串不可变,所有"修改"操作都返回新字符串
十、总结
Python字符串函数要点:
- 基础操作:
len()
,ord()
,chr()
,str()
- 类型转换:
ascii()
,repr()
,bytes()
,bytearray()
- 格式化输出:
format()
, 配合print()
- 高级功能:
eval()
,exec()
,hash()
- 文件IO:
open()
与字符串编码密切相关
掌握这些内置函数,配合字符串方法,你将能高效处理各种文本处理任务!从简单的字符串操作到复杂的文本处理,这些工具都能大显身手。
相关文章:
Python字符串常用内置函数详解
文章目录 Python字符串常用内置函数详解一、基础字符串函数1. len() - 获取字符串长度2. ord() - 获取字符的Unicode码点3. chr() - 通过Unicode码点获取字符4. ascii() - 获取字符的ASCII表示 二、类型转换函数1. str() - 将对象转为字符串2. repr() - 获取对象的官方字符串表…...
MyBatis 批量新增与删除功能完整教程
一、功能概述 通过 MyBatis 动态 SQL 实现以下功能: 批量新增:一次性插入多条员工记录,支持自增主键回填。批量删除:根据 ID 数组一次性删除多条记录。二、代码逐行解析 1. Mapper 接口定义 // 批量新增:传入员工对象集合 void insertAll(List<Emp> empList);// …...
HTML常用标签用法全解析:构建语义化网页的核心指南
HTML作为网页开发的基石,其标签的合理使用直接影响页面的可读性、SEO效果及维护性。本文系统梳理HTML核心标签的用法,结合语义化设计原则与实战示例,助你构建规范、高效的网页结构。 一、基础结构与排版标签 1.1 文档结构 <!DOCTYPE htm…...
大数据架构选型全景指南:核心架构对比与实战案例 解析
目录 大数据架构选型全景指南:核心架构对比与实战案例解析1. 主流架构全景概览1.1 核心架构类型1.2 关键选型维度 2. 架构对比与选型矩阵2.1 主流架构对比表2.2 选型决策树 3. 案例分析与实现案例1:电商实时推荐系统(Lambda架构)案…...
FPGA: XILINX Kintex 7系列器件的架构
本文将详细介绍Kintex-7系列FPGA器件的架构。以下内容将涵盖Kintex-7的核心架构特性、主要组成部分以及关键技术,尽量全面且结构化,同时用简洁的语言确保清晰易懂。 Kintex-7系列FPGA架构概述 Kintex-7是Xilinx 7系列FPGA中的中高端产品线,基…...

RK3568-鸿蒙5.1与原生固件-扇区对比分析
编译生成的固件目录地址 ../openharmony/out/rk3568/packages/phone/images鸿蒙OS RK3568固件分析 通过查看提供的信息,分析RK3568开发板固件的各个组件及其用途: 主要固件组件 根据终端输出的文件列表,RK3568固件包含以下关键组件&#x…...

常见激活函数——作用、意义、特点及实现
文章目录 激活函数的意义常见激活函数及其特点1. Sigmoid(Logistic 函数、S型函数)2. Tanh(双曲正切函数)3. ReLU(Rectified Linear Unit修正线性单元)4. Softmax5. Swish(Google 提出ÿ…...
Spring模拟转账开发
完成转账代码的编写 service public class AccountServiceImpl implements AccountService {Autowiredprivate AccountDao accountDao;public void setAccountDao(AccountDao accountDao) {this.accountDao accountDao;}public void pay(String out, String in, Double money)…...

基于微信小程序的在线聊天功能实现:WebSocket通信实战
基于微信小程序的在线聊天功能实现:WebSocket通信实战 摘要 本文将详细介绍如何使用微信小程序结合WebSocket协议开发一个实时在线聊天功能。通过完整的代码示例和分步解析,涵盖界面布局、WebSocket连接管理、消息交互逻辑及服务端实现,适合…...

小波变换+注意力机制成为nature收割机
小波变换作为一种新兴的信号分析工具,能够高效地提取信号的局部特征,为复杂数据的处理提供了有力支持。然而,它在捕捉数据中最为关键的部分时仍存在局限性。为了弥补这一不足,我们引入了注意力机制,借助其能够强化关注…...

【无标题】威灏光电哲讯科技MES项目启动会圆满举行
5月14日,威灏光电与哲讯科技MES项目启动会在威灏光电总部隆重举行。威灏光电董事长江轮、总经理刘明星、哲讯科技总经理崔新华、副总王子文及双方项目组成员共同出席,标志着两家企业在数字化领域的第二次深度合作正式启航。 强强联手,二度合作…...
腾讯云存储原理
我们来详细展开你提到的两个核心结构概念: 一、“基于分布式文件系统 对象存储技术” 是什么? 1. 分布式文件系统(DFS)基础 分布式文件系统是一种支持将数据分布在多个存储节点上、并对上层用户透明的文件系统。腾讯云COS虽然是…...

display:grid网格布局属性说明
网格父级 :display:grid(块级网格)/ inline-grid(行内网格) 注意:当设置网格布局,column、float、clear、vertical-align的属性是无效的。 HTML: <ul class"ls02 f18 mt50 sysmt30&…...

排序算法之高效排序:快速排序,归并排序,堆排序详解
排序算法之高效排序:快速排序、归并排序、堆排序详解 前言一、快速排序(Quick Sort)1.1 算法原理1.2 代码实现(Python)1.3 性能分析 二、归并排序(Merge Sort)2.1 算法原理2.2 代码实现…...

Java 并发编程归纳总结(可重入锁 | JMM | synchronized 实现原理)
1、锁的可重入 一个不可重入的锁,抢占该锁的方法递归调用自己,或者两个持有该锁的方法之间发生调用,都会发生死锁。以之前实现的显式独占锁为例,在递归调用时会发生死锁: public class MyLock implements Lock {/* 仅…...

基于对抗性后训练的快速文本到音频生成:stable-audio-open-small 模型论文速读
Fast Text-to-Audio Generation with Adversarial Post-Training 论文解析 一、引言与背景 文本到音频系统的局限性:当前文本到音频生成系统性能虽佳,但推理速度慢(需数秒至数分钟),限制了其在创意领域的应用。 研究…...
BUFDS_GTE2,IBUFDS,BUFG缓冲的区别
1、IBUFDS_GTE2 这是 Xilinx FPGA 中专门为 高速收发器(SerDes/GTX/GTH/GTY)参考时钟设计的差分输入缓冲器。 主要功能是将外部的差分时钟信号(如LVDS、LVPECL等)转换为FPGA内部的单端时钟信号,并保证信号的完整性和高…...

ADC深入——SNR、SFDR、ENOB等概念
目录 SNR(Spurious‑Free Dynamic Range 信噪比) ENOB(Effective Number Of Bits 有效位) SFDR(Spurious‑Free Dynamic Range) 感觉SNR和SFDR差不多?看看下图 输入带宽 混叠 带通采样/欠…...
ThinkPad X250电池换电池芯(理论技术储备)
参考:笔记本电池换电芯的经验与心得分享 - 经典ThinkPad专区 - 专门网 换电池芯,需要克服以下问题: 1 拆电池。由于是超声波焊接,拆解比较费力,如果暴力撬,有可能导致电池壳变形... 2 替换电池芯的时候如…...

硬件厂商的MIB文档详解 | 如何查询OID? | MIB Browser实战指南-优雅草卓伊凡
硬件厂商的MIB文档详解 | 如何查询OID? | MIB Browser实战指南-优雅草卓伊凡 一、硬件厂商的MIB文档是什么? 1. MIB的本质:设备的”数据字典” MIB(Management Information Base) 是SNMP协议的核心数据库,定义了设备…...

阿里开源通义万相 Wan2.1-VACE,开启视频创作新时代
0.前言 阿里巴巴于2025年5月14日正式开源了其最新的AI视频生成与编辑模型——通义万相Wan2.1-VACE。这一模型是业界功能最全面的视频生成与编辑工具,能够同时支持多种视频生成和编辑任务,包括文生视频、图像参考视频生成、视频重绘、局部编辑、背景延展…...

小学数学题批量生成及检查工具
软件介绍 今天给大家介绍一款近期发现的小工具,它非常实用。 软件特点与出题功能 这款软件体积小巧,不足两兆,具备强大的功能,能够轻松实现批量出题。使用时,只需打开软件,输入最大数和最小数,…...

5.13/14 linux安装centos及一些操作命令随记
一、环境准备 VMware Workstation版本选择建议 CentOS 7 ISO镜像下载指引 虚拟机硬件配置建议(内存/处理器/磁盘空间) 二、系统基础命令 一、环境准备 1.VMware Workstation版本选择建议 版本选择依据 选择VMware Workstation的版本时,…...
OpenCV 背景建模详解:从原理到实战
在计算机视觉领域,背景建模是一项基础且重要的技术,它能够从视频流中分离出前景目标,广泛应用于运动目标检测、视频监控、人机交互等场景。OpenCV 作为计算机视觉领域最受欢迎的开源库之一,提供了多种高效的背景建模算法。本文将深…...
Transformer 模型与注意力机制
目录 Transformer 模型与注意力机制 一、Transformer 模型的诞生背景 二、Transformer 模型的核心架构 (一)编码器(Encoder) (二)解码器(Decoder) 三、注意力机制的深入剖析 …...
卡顿检测与 Choreographer 原理
一、卡顿检测的原理 卡顿的本质是主线程(UI 线程)未能及时完成某帧的渲染任务(超过 16.6ms,以 60Hz 屏幕为例),导致丢帧(Frame Drop)。检测卡顿的核心思路是监控主线程任务的执行时…...

Baklib加速企业AI数据智理转型
Baklib智理AI数据资产 在AI技术深度渗透业务场景的背景下,Baklib通过构建企业级知识中台架构,重塑了数据资产的治理范式。该平台采用智能分类引擎与语义分析模型,将分散在邮件、文档、数据库中的非结构化数据转化为标准化的知识单元…...

基于协同过滤的文学推荐系统设计【源码+文档+部署】
基于协同过滤的文学推荐系统设计 摘要 随着信息技术的飞速发展和文学阅读需求的日益多样化,构建一个高效、精准的文学推荐系统变得尤为重要。本文采用Spring Boot框架,结合协同过滤算法,设计并实现了一个基于用户借阅行为和社交论坛互动的文学…...
在c/c++中,如何使用链表进行插入、删除和遍历功能。
首先,链表由节点组成,每个节点应该包含数据和指向下一个节点的指针。 结构体可以包含数据域和指针域。 比如,假设链表存储整数,那节点的结构体应该有一个int类型的数据和一个指向同样结构体的指针。结构体定义大概是这样的&…...

数据结构与算法——单链表(续)
单链表(续) 查找在指定位置之前插入结点在指定位置之后插入结点删除pos位置的结点删除pos位置之后的结点销毁 查找 遍历:pcur指向头结点,循环,当pucr不为空进入循环,pucr里面指向的数据为要查找的值的时候…...