Python 3 字符串代码实例
·
Python 字符串基础
Python 中的字符串是不可变的序列类型,支持 Unicode 编码,无需手动管理终止符。字符串的声明和初始化非常灵活:
str1 = "Hello" # 双引号
str2 = 'World' # 单引号
str3 = """多行
字符串""" # 三引号支持多行
str4 = str(123) # 从其他类型转换
字符串输入与输出
使用内置函数可以方便地进行字符串的输入和输出操作:
name = input("Enter your name: ") # 获取用户输入
print(f"Hello, {name}!") # f-string 格式化输出
age = 25
print("Name: {}, Age: {}".format(name, age)) # format 方法
print("Name: %s, Age: %d" % (name, age)) # 百分号格式化(旧式)
常用字符串处理函数/方法
Python 字符串内置了丰富的方法,无需额外导入模块:
str1 = "Hello"
str2 = "World"
# 字符串拼接
str3 = str1 + " " + str2
print(f"str3 after concatenation: {str3}")
# 字符串长度
print(f"Length of str3: {len(str3)}")
# 字符串比较
if str1 == str2:
print("Strings are equal")
else:
print("Strings are different")
# 大小写转换
print(str1.upper()) # HELLO
print(str1.lower()) # hello
# 查找子串
print(str3.find("World")) # 6
print("World" in str3) # True
# 替换
print(str3.replace("World", "Python")) # Hello Python
# 去除空白
text = " spaces "
print(text.strip()) # "spaces"
字符串与索引/切片
Python 字符串支持索引访问和切片操作,每个字符可通过索引获取:
str_var = "Pointer"
# 索引访问
print(str_var[0]) # P
print(str_var[-1]) # r
# 切片操作
print(str_var[0:3]) # Poi
print(str_var[::2]) # Pitr
print(str_var[::-1]) # retnioP
# 遍历字符串
for char in str_var:
print(char, end=" ")
print()
字符串列表
处理多个字符串时可以使用列表,更加灵活高效:
# 字符串列表
names1 = ["Alice", "Bob", "Charlie"]
# 元组(不可变序列)
names2 = ("David", "Eve", "Frank")
for i in range(len(names1)):
print(f"{names1[i]}\t{names2[i]}")
# 列表推导式处理字符串
upper_names = [name.upper() for name in names1]
print(upper_names) # ['ALICE', 'BOB', 'CHARLIE']
字符串操作示例
字符串分割是一个常见操作,可以使用 split 方法实现:
str_var = "apple,orange,banana"
# 按分隔符分割
tokens = str_var.split(",")
for token in tokens:
print(token)
# 限制分割次数
print("a,b,c,d".split(",", 2)) # ['a', 'b', 'c,d']
# 多字符分隔符:使用 split() 或正则表达式
import re
text = "apple; orange|banana"
result = re.split(r'[;|]\s*', text)
print(result) # ['apple', 'orange', 'banana']
安全字符串处理
Python 字符串天然免疫缓冲区溢出问题,但仍需注意编码和注入安全:
# 无需担心长度溢出,但注意内存占用
src = "This string could be very long"
dest = src[:9] # 安全切片,自动截断
print(f"Truncated string: {dest}")
# 用户输入过滤(防止注入)
user_input = "<script>alert('xss')</script>"
safe_input = user_input.replace("<", "<").replace(">", ">")
print(f"Safe input: {safe_input}")
# 使用模板引擎更安全
from string import Template
t = Template("Hello, $name!")
print(t.safe_substitute(name="World"))
自定义字符串函数
实现自定义的字符串处理函数可以加深对字符串的理解:
def my_strlen(s: str) -> int:
"""自定义字符串长度函数"""
count = 0
for _ in s:
count += 1
return count
def my_count(s: str, sub: str) -> int:
"""自定义子串计数函数"""
count = 0
start = 0
while True:
idx = s.find(sub, start)
if idx == -1:
break
count += 1
start = idx + len(sub)
return count
test = "Length test test"
print(f"Length: {my_strlen(test)}")
print(f"'test' count: {my_count(test, 'test')}")
性能注意事项
字符串操作在 Python 中需要特别注意性能和内存问题:
- 避免频繁的字符串拼接:使用
join()方法替代+拼接大量字符串 - 优先使用列表推导式和生成器表达式处理大量字符串
- 善用内置方法:
str方法通常由 C 实现,效率更高 - 考虑使用
io.StringIO处理大量文本流操作
# 高效拼接大量字符串
parts = ["Line " + str(i) for i in range(1000)]
result = "\n".join(parts) # 比循环 += 高效得多
# 处理大文本时使用生成器
def read_large_file(filepath):
with open(filepath, 'r', encoding='utf-8') as f:
for line in f:
yield line.strip()
以上代码示例涵盖了 Python 3 字符串的主要概念和操作,从基础用法到高级技巧,为开发者提供了全面的参考。
更多推荐

所有评论(0)