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

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()字符转Unicodeord("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")整数

九、注意事项

  1. 安全风险eval()exec()可以执行任意代码,不要用于处理用户输入
  2. 编码问题:处理文件时总是明确指定编码(如encoding="utf-8")
  3. 性能考虑:大量字符串操作时考虑使用join()而非+
  4. 不可变性:字符串不可变,所有"修改"操作都返回新字符串

十、总结

Python字符串函数要点:

  1. 基础操作len(), ord(), chr(), str()
  2. 类型转换ascii(), repr(), bytes(), bytearray()
  3. 格式化输出format(), 配合print()
  4. 高级功能eval(), exec(), hash()
  5. 文件IOopen()与字符串编码密切相关

掌握这些内置函数,配合字符串方法,你将能高效处理各种文本处理任务!从简单的字符串操作到复杂的文本处理,这些工具都能大显身手。

http://www.xdnf.cn/news/6829.html

相关文章:

  • 独立开发者利用AI工具快速制作产品MVP
  • Qt功能区:Ribbon使用
  • Linux复习笔记(六)shell编程
  • 实现书签-第一部分
  • 中大型水闸安全监测系统建设实施方案
  • 在服务器上安装AlphaFold2遇到的问题(2)
  • 【C++】 —— 笔试刷题day_30
  • 【C++ | 内存管理】C++ weak_ptr 详解:成员函数、使用例子与实现原理
  • 力扣654题:最大二叉树(递归)
  • 实时技术方案对比:SSE vs WebSocket vs Long Polling
  • Java Set系列集合详解:HashSet、LinkedHashSet、TreeSet底层原理与使用场景
  • 产品经理入门——认识产品经理
  • OCCT知识笔记之Poly_Triangulation详解
  • YOLOv7训练时4个类别只出2个类别
  • vue使用Fabric和pdfjs完成合同签章及批注
  • 第八节第三部分:认识枚举、枚举的作用和应用场景
  • DeepSearch:WebThinker开启AI搜索研究新纪元!
  • 游戏站的几种形式
  • redis数据结构-11(了解 Redis 持久性选项:RDB 和 AOF)
  • STM32H743IIT6_ADC采集误差分析与ADC_DMA
  • 【论信息系统项目的整合管理】
  • leetcode 2900. 最长相邻不相等子序列 I 简单
  • 【LeetCode 热题 100】搜索插入位置 / 搜索旋转排序数组 / 寻找旋转排序数组中的最小值
  • 基于javaweb的SpringBoot驾校预约学习系统设计与实现(源码+文档+部署讲解)
  • Jenkins 安装与配置指南
  • A12 乐队指挥更懂管理
  • STM32 定时器主从模式配置解析
  • C++:单例模式
  • Day 22 训练
  • 01-多线程案例-线程安全问题