Python字符串常用内置函数详解

发布于:2025-05-17 ⋅ 阅读:(13) ⋅ 点赞:(0)

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,567

print("{}的{}成绩是{}".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 random

def 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':
            break
        try:
            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 + base
            result.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") 整数

九、注意事项

  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()与字符串编码密切相关

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


网站公告

今日签到

点亮在社区的每一天
去签到