文章目录
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") |
整数 |
九、注意事项
- 安全风险:
eval()
和exec()
可以执行任意代码,不要用于处理用户输入 - 编码问题:处理文件时总是明确指定编码(如
encoding="utf-8"
) - 性能考虑:大量字符串操作时考虑使用
join()
而非+
- 不可变性:字符串不可变,所有"修改"操作都返回新字符串
十、总结
Python字符串函数要点:
- 基础操作:
len()
,ord()
,chr()
,str()
- 类型转换:
ascii()
,repr()
,bytes()
,bytearray()
- 格式化输出:
format()
, 配合print()
- 高级功能:
eval()
,exec()
,hash()
- 文件IO:
open()
与字符串编码密切相关
掌握这些内置函数,配合字符串方法,你将能高效处理各种文本处理任务!从简单的字符串操作到复杂的文本处理,这些工具都能大显身手。