字符串操作

字符串基础

字符串是由字符组成的序列,用引号包围。

创建字符串

s1 = 'Hello'
s2 = "World"
s3 = '''多行
字符串'''
s4 = """也是多行
字符串"""

print(s1)
print(s2)
print(s3)
print(s4)

转义字符

print("Hello\nWorld")       
print("Hello\tWorld")       
print("Hello\\World")       
print("Hello\"World")       
print(r"Hello\nWorld")      

常用转义字符

转义字符描述
\n换行
\t制表符
\反斜杠
'单引号
"双引号
\r回车

字符串索引与切片

索引访问

s = "Python"

print(s[0])      
print(s[1])      
print(s[-1])     
print(s[-2])     

切片操作

s = "Python"

print(s[0:3])     
print(s[2:])      
print(s[:4])      
print(s[:])       
print(s[::2])     
print(s[::-1])    
print(s[-3:])     

切片语法

字符串[开始:结束:步长]
  • 开始:起始索引(包含),默认为 0
  • 结束:结束索引(不包含),默认为字符串长度
  • 步长:步进值,默认为 1

字符串拼接

使用 + 号

s1 = "Hello"
s2 = "World"

s3 = s1 + " " + s2
print(s3)  

使用 join() 方法

words = ["Hello", "World", "Python"]
s = " ".join(words)
print(s)  

s2 = "-".join(words)
print(s2)  

使用 * 号重复

s = "Ha" * 3
print(s)  

字符串格式化

1. f-string(推荐)

Python 3.6+ 推荐使用的方式:

name = "张三"
age = 25
height = 1.75

print(f"姓名:{name}")
print(f"年龄:{age}岁")
print(f"身高:{height:.2f}米")

print(f"明年{age + 1}岁")
print(f"{name.upper()}")

2. format() 方法

name = "张三"
age = 25

print("姓名:{},年龄:{}".format(name, age))
print("姓名:{0},年龄:{1},{0}很高兴".format(name, age))
print("姓名:{name},年龄:{age}".format(name=name, age=age))

print("身高:{:.2f}米".format(1.756))
print("数字:{:d}".format(42))
print("百分比:{:.1%}".format(0.856))

3. % 格式化(旧式)

name = "张三"
age = 25

print("姓名:%s,年龄:%d" % (name, age))
print("身高:%.2f米" % 1.756)

格式化符号

符号描述
%s字符串
%d整数
%f浮点数
%.2f保留2位小数
%x十六进制
%o八进制
%e科学计数法

常用字符串方法

大小写转换

s = "Hello World"

print(s.upper())         
print(s.lower())         
print(s.title())         
print(s.capitalize())    
print(s.swapcase())      

查找与替换

s = "Hello World, Hello Python"

print(s.find("World"))           
print(s.find("Python"))          
print(s.find("Java"))            
print(s.rfind("Hello"))          

print(s.index("World"))          
print(s.count("Hello"))          

print(s.replace("World", "Python"))  
print(s.replace("Hello", "Hi", 1))   

分割与连接

s = "apple,banana,orange"

fruits = s.split(",")
print(fruits)  

s2 = "  Hello  World  "
print(s2.split())  

words = ["Hello", "World", "Python"]
print(" ".join(words))  
print("-".join(words))  

lines = "第一行\n第二行\n第三行"
print(lines.splitlines())  

去除空白

s = "  Hello World  "

print(s.strip())       
print(s.lstrip())      
print(s.rstrip())      

s2 = "xxHello Worldxx"
print(s2.strip("x"))   

判断方法

s = "Hello World"

print(s.startswith("Hello"))     
print(s.endswith("World"))       

s2 = "12345"
print(s2.isdigit())              

s3 = "Hello"
print(s3.isalpha())              

s4 = "Hello123"
print(s4.isalnum())              

s5 = "   "
print(s5.isspace())              

s6 = "hello world"
print(s6.islower())              

s7 = "HELLO WORLD"
print(s7.isupper())              

对齐与填充

s = "Python"

print(s.center(20))              
print(s.center(20, "*"))         
print(s.ljust(20, "-"))          
print(s.rjust(20, "-"))          
print(s.zfill(20))               

其他常用方法

s = "Hello World"

print(len(s))                    
print(max(s))                    
print(min(s))                    

print(ord("A"))                  
print(chr(65))                   

print(s.encode("utf-8"))         
print(b"Hello".decode("utf-8"))  

字符串判断

检查内容

s = "Hello World"

print("Hello" in s)              
print("Python" not in s)         

if "World" in s:
    print("包含 World")

多行字符串

三引号字符串

text = """
这是一个
多行字符串
可以保留格式
"""

print(text)

保持格式

html = """
<html>
    <head>
        <title>标题</title>
    </head>
    <body>
        <p>内容</p>
    </body>
</html>
"""

print(html)

原始字符串

原始字符串不转义特殊字符:

path = "C:\\Users\\Admin\\Desktop"
print(path)

path_raw = r"C:\Users\Admin\Desktop"
print(path_raw)

regex = r"\d+\.\d+"
print(regex)

字符串编码

编码与解码

s = "你好,世界"

encoded = s.encode("utf-8")
print(encoded)  

decoded = encoded.decode("utf-8")
print(decoded)  

常见编码

  • UTF-8:通用编码,支持所有语言
  • GBK:中文编码
  • ASCII:英文字符编码

实践练习

练习 1:邮箱验证

email = "user@example.com"

if "@" in email and "." in email:
    print("邮箱格式正确")
else:
    print("邮箱格式错误")

练习 2:字符串反转

s = "Hello World"
reversed_s = s[::-1]
print(reversed_s)  

练习 3:统计单词

text = "Hello World, Hello Python, Hello Everyone"
word = "Hello"
count = text.count(word)
print(f"'{word}' 出现了 {count} 次")

练习 4:格式化输出

products = [
    ("苹果", 5.5, 10),
    ("香蕉", 3.2, 20),
    ("橙子", 4.8, 15)
]

print("商品\t单价\t数量\t总价")
print("-" * 40)

for name, price, qty in products:
    total = price * qty
    print(f"{name}\t{price:.1f}\t{qty}\t{total:.1f}")

小结

本章我们学习了:

  • 字符串的创建和转义
  • 字符串索引和切片
  • 字符串拼接方法
  • 三种字符串格式化方式
  • 常用字符串方法
  • 字符串编码处理

字符串是 Python 中最常用的数据类型之一,掌握字符串操作对于文本处理非常重要。在下一章中,我们将学习流程控制,了解如何控制程序的执行流程。