Python 字符串操作
概述
字符串是编程中最常用的数据类型之一,特别是在文本处理、数据清洗和自然语言处理等领域。掌握字符串操作是 Python 编程的基础技能。
Python 字符串操作的基础知识与实战技巧。内容包括字符串的基本操作(索引、切片)、常用方法(大小写转换、查找替换、分割连接)、三种格式化方式(%、format、f-string)的对比、编码与解码处理、类型转换以及高级操作(对齐、填充)。文章提供了完整的代码示例,帮助读者理解字符串在文本处理、数据清洗中的实际应用,并总结了学习要点与实践建议。

字符串是编程中最常用的数据类型之一,特别是在文本处理、数据清洗和自然语言处理等领域。掌握字符串操作是 Python 编程的基础技能。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
print("=== Python 字符串操作详解 ===\n")
# 1. 字符串基本操作
print("1. 字符串基本操作:")
text = "Hello, Python World!"
print(f"原始字符串:'{text}'")
# 字符串索引(从 0 开始)
print(f"第一个字符:'{text[0]}'")
print(f"最后一个字符:'{text[-1]}'")
# 字符串切片 [start:end:step]
print(f"前 5 个字符:'{text[:5]}'")
print(f"从第 7 个字符到最后:'{text[6:]}'")
print(f"第 7 到第 12 个字符:'{text[6:12]}'")
print(f"每隔一个字符:'{text[::2]}'")
print(f"反转字符串:'{text[::-1]}'")
# 字符串长度
print(f"字符串长度:{len(text)}")
print()
# 2. 字符串常用方法
print("2. 字符串常用方法:")
sample_text = " Hello, Python! Welcome to the World of Python Programming. "
print(f"示例字符串:'{sample_text}'")
# 去除空白字符
stripped = sample_text.strip()
print(f"去除首尾空白:'{stripped}'")
# 大小写转换
print(f"全部大写:'{stripped.upper()}'")
print(f"全部小写:'{stripped.lower()}'")
print(f"首字母大写:'{stripped.capitalize()}'")
print(f"每个单词首字母大写:'{stripped.title()}'")
# 查找和替换
print(f"查找'Python'的位置:{stripped.find('Python')}")
print(f"查找最后一个'Python'的位置:{stripped.rfind('Python')}")
print(f"'Python'出现的次数:{stripped.count('Python')}")
# 替换
replaced = stripped.replace('Python', 'Java')
print(f"将'Python'替换为'Java': '{replaced}'")
# 分割和连接
words = stripped.split()
print(f"按空格分割:{words}")
sentence = "Python,is,awesome"
split_by_comma = sentence.split(',')
print(f"按逗号分割:{split_by_comma}")
joined = '-'.join(words[:4])
# 连接前 4 个单词
print(f"用'-'连接前 4 个单词:'{joined}'")
# 判断方法
print(f"是否以'Hello'开头:{stripped.startswith('Hello')}")
print(f"是否以'Programming.'结尾:{stripped.endswith('Programming.')}")
print(f"是否全为字母:{'Hello'.isalpha()}")
print(f"是否全为数字:{'123'.isdigit()}")
print(f"是否全为字母或数字:{'Hello123'.isalnum()}")
print()
# 3. 字符串格式化
print("3. 字符串格式化:")
name = "张三"
age = 25
city = "北京"
# 1. 百分号格式化(老式方法)
old_style = "姓名:%s, 年龄:%d, 城市:%s" % (name, age, city)
print(f"百分号格式化:{old_style}")
# 2. str.format() 方法
format_method = "姓名:{}, 年龄:{}, 城市:{}".format(name, age, city)
print(f"format 方法:{format_method}")
# 3. f-string(推荐方法,Python 3.6+)
f_string = f"姓名:{name}, 年龄:{age}, 城市:{city}"
print(f"f-string: {f_string}")
# 格式说明符
pi = 3.141592653589793
print(f"π的值(保留 2 位小数): {pi:.2f}")
print(f"π的值(科学计数法): {pi:.2e}")
number = 42
print(f"数字补零(5 位): {number:05d}")
print()
# 4. 字符串编码和解码
print("4. 字符串编码和解码:")
chinese_text = "你好,世界!"
print(f"中文字符串:{chinese_text}")
# 编码为 bytes
encoded = chinese_text.encode('utf-8')
print(f"UTF-8 编码:{encoded}")
# 解码为字符串
decoded = encoded.decode('utf-8')
print(f"UTF-8 解码:{decoded}")
print()
# 5. 多行字符串和转义字符
print("5. 多行字符串和转义字符:")
# 使用转义字符
escape_example = "第一行\n第二行\t制表符\\反斜杠"
print("转义字符示例:")
print(escape_example)
# 使用原始字符串(忽略转义字符)
raw_string = r"C:\Users\张三\Documents"
print(f"原始字符串:{raw_string}")
# 多行字符串
multi_line = """
这是多行字符串的第一行
这是第二行
这是第三行
"""
print("多行字符串:")
print(multi_line)
print()
# 6. 字符串与其他数据类型的转换
print("6. 字符串与其他数据类型的转换:")
# 数字转字符串
num = 123.456
num_str = str(num)
print(f"数字 {num} 转字符串:'{num_str}'")
# 字符串转数字
str_int = "123"
str_float = "45.67"
converted_int = int(str_int)
converted_float = float(str_float)
print(f"字符串 '{str_int}' 转整数:{converted_int}")
print(f"字符串 '{str_float}' 转浮点数:{converted_float}")
# 列表转字符串
my_list = ['apple', 'banana', 'orange']
list_str = ','.join(my_list)
print(f"列表 {my_list} 转字符串:'{list_str}'")
# 字符串转列表
str_to_list = list_str.split(',')
print(f"字符串 '{list_str}' 转列表:{str_to_list}")
print()
# 7. 字符串的高级操作
print("7. 字符串的高级操作:")
# 字符串对齐
text = "Python"
print(f"居中对齐 (20 字符): '{text.center(20)}'")
print(f"左对齐 (20 字符): '{text.ljust(20)}'")
print(f"右对齐 (20 字符): '{text.rjust(20)}'")
print(f"用*填充:'{text.center(20,'*')}'")
# 字符串填充
number = "42"
print(f"左侧补零 (5 位): '{number.zfill(5)}'")
# 字符串检查
email = "[email protected]"
print(f"邮箱格式检查 '{email}': {'@' in email and '.' in email}")
# 字符串迭代
word = "Python"
print(f"遍历字符串 '{word}':")
for i, char in enumerate(word):
print(f" 索引 {i}: '{char}'")
print("\n=== 字符串操作详解结束 ===")
字符串处理通常包含以下逻辑分支:首先判断是否需要清洗(如去除空白),然后决定是直接处理还是进一步格式化。若需要分割,则执行 split 操作并处理结果,否则进行其他操作,最终得到处理结果。
| 格式化方法 | 语法示例 | 优点 | 缺点 |
|---|---|---|---|
| % 格式化 | "Hello %s" % name | 兼容性好,适用于旧版本 Python | 不直观,容易出错 |
| format 方法 | "Hello {}".format(name) | 功能强大,支持位置和命名参数 | 语法稍复杂 |
| f-string | f"Hello {name}" | 直观易读,性能好 | 需要 Python 3.6+ 版本 |

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online