字符串操作大全
字符串的创建
Python中字符串可以用单引号、双引号或三引号创建:
s1 = 'Hello'
s2 = "World"
s3 = '''这是
多行
字符串'''
s4 = """这也是
多行字符串"""
# 转义字符
tab_str = "姓名\t年龄\t城市" # \t 制表符
new_line = "第一行\n第二行" # \n 换行符
quote_str = "他说\"你好\"" # \" 双引号
backslash = "C:\\Users\\name" # \\ 反斜杠
# 原始字符串(不处理转义)
path = r"C:\Users\new_folder" # \n 不会被转义
字符串索引与切片
字符串是有序的字符序列,支持索引和切片:
text = "Python编程"
# 正向索引(从0开始)
print(text[0]) # 输出: P
print(text[6]) # 输出: 程
# 反向索引(从-1开始)
print(text[-1]) # 输出: 程
print(text[-3]) # 输出: 编
# 切片语法: 字符串[start:stop:step]
print(text[0:6]) # 输出: Python
print(text[:6]) # 省略start,默认从0开始
print(text[6:]) # 省略stop,默认到末尾
print(text[::2]) # 步长为2,每隔一个取一个
print(text[::-1]) # 反转字符串
注意:字符串是不可变的,不能通过索引赋值修改。
text = "Hello"
# text[0] = "h" # 会报错!TypeError
text = "hello" # 只能重新赋值
常用字符串方法
大小写转换
s = "hello, python"
print(s.upper()) # 转大写: HELLO, PYTHON
print(s.lower()) # 转小写: hello, python
print(s.title()) # 每个单词首字母大写: Hello, Python
print(s.capitalize()) # 首字母大写: Hello, python
print(s.swapcase()) # 大小写互换: HELLO, PYTHON
查找与替换
text = "Hello, World! Hello, Python!"
print(text.find("Hello")) # 返回首次出现的索引: 0
print(text.find("Hello", 5)) # 从索引5开始查找: 13
print(text.find("Java")) # 未找到返回: -1
print(text.count("Hello")) # 出现次数: 2
print(text.replace("Hello", "Hi")) # 替换所有: Hi, World! Hi, Python!
分割与合并
# 分割字符串
csv_data = "张三,25,北京"
parts = csv_data.split(",") # 按逗号分割
print(parts) # ['张三', '25', '北京']
text = "Hello World Python"
words = text.split() # 默认按空白字符分割
print(words) # ['Hello', 'World', 'Python']
# 合并字符串
words = ["Python", "是", "最好的", "语言"]
sentence = "".join(words)
print(sentence) # Python是最好的语言
# 用分隔符连接
result = " - ".join(["2024", "01", "15"])
print(result) # 2024 - 01 - 15
判断方法
s1 = "12345"
s2 = "hello"
s3 = " "
print(s1.isdigit()) # 是否全是数字: True
print(s2.isalpha()) # 是否全是字母: True
print(s1.isalnum()) # 是否全是字母或数字: True
print(s3.isspace()) # 是否全是空白字符: True
print(s2.startswith("he")) # 是否以"he"开头: True
print(s2.endswith("lo")) # 是否以"lo"结尾: True
空白处理
s = " Hello, World! "
print(s.strip()) # 去除首尾空白: "Hello, World!"
print(s.lstrip()) # 去除左侧空白: "Hello, World! "
print(s.rstrip()) # 去除右侧空白: " Hello, World!"
print(s.strip(" H!")) # 去除指定字符: "ello, World"
字符串格式化
Python提供了多种字符串格式化方式:
f-string(推荐)
name = "小明"
age = 25
score = 95.5
# 基本用法
print(f"姓名: {name}, 年龄: {age}")
# 表达式
print(f"明年 {age + 1} 岁")
# 格式化数字
print(f"分数: {score:.1f}") # 保留一位小数: 95.5
print(f"百分比: {0.856:.1%}") # 百分比格式: 85.6%
print(f"金额: {1234567:,}") # 千位分隔: 1,234,567
format方法
# 位置参数
print("{}的成绩是{}".format("小明", 95))
# 命名参数
print("{name}今年{age}岁".format(name="小明", age=25))
# 格式化
print("{:.2f}".format(3.14159)) # 3.14
% 格式化(旧式)
name = "小明"
age = 25
print("姓名: %s, 年龄: %d" % (name, age))
字符串编码
Python3中字符串默认使用UTF-8编码:
# 编码与解码
s = "你好,Python"
# 转为字节
b = s.encode("utf-8")
print(b) # b'\xe4\xbd\xa0\xe5\xa5\xbd...'
# 解码回字符串
text = b.decode("utf-8")
print(text) # 你好,Python
# 获取字符串长度
print(len(s)) # 字符数: 9
print(len(b.encode("utf-8"))) # 字节数
总结
字符串是Python中最常用的数据类型之一。掌握了字符串的索引、切片、方法和格式化后,你就能高效地处理各种文本数据。下一节我们将学习条件语句,让程序具备逻辑判断能力。