字符串(str)作为不可变序列,支持索引、切片、拼接、比较、成员运算等多种操作。这些基础操作是文本处理的核心。
一、索引与切片
通过下标 [] 和切片 [:] 访问子串,支持正向、反向索引和步长。
s = "python"print(s[0]) # p,第一个字符print(s[-1]) # n,最后一个字符print(s[1:4]) # yth,切片(左闭右开)print(s[::-1]) # nohtyp,反转
二、拼接与重复
使用 + 拼接字符串,使用 * 重复字符串。
a, b = "Hello", "World"print(a + " " + b) # Hello Worldprint("Hi! " * 3) # Hi! Hi! Hi!
三、比较运算
字符串比较基于 Unicode 编码顺序,可使用 ==、!=、<、> 等关系运算符进行比较。
print("apple" == "apple") # Trueprint("apple" < "banana") # Trueprint("Zoo" > "apple") # False(因为 'Z' < 'a' 的编码值)
四、成员运算
使用 in、not in 判断子串是否存在。
s = "banana"print("na" in s) # Trueprint("xy" not in s) # True
五、遍历字符串
字符串是可迭代对象,可用 for 循环逐字符访问。
for ch in "hi": print(ch)# h# i
六 、查找与统计
使用字符串方法 find() 定位子串,count() 统计出现次数。
s = "banana"print(s.find("na")) # 2print(s.count("na")) # 2
七、使用内置函数和方法
1、内置函数
许多内置函数可直接用于字符串:
s = "banana"print(len(s)) # 6print(max(s)) # nprint(min(s)) # aprint(sorted(s)) # ['a', 'a', 'a', 'b', 'n', 'n']
2、str 类的方法
str 类提供了大量的方法来处理字符串,比如大小写转换、去除空白或指定字符以及拆分与拼接等。
# 大小写转换print("Hello".lower()) # helloprint("Hello".upper()) # HELLO
# 去除空白或指定字符print(" hello ".strip()) # "hello"print("xxhelloxx".strip("x")) # "hello"
# 拆分与拼接s = "a b c"print(s.split()) # ['a', 'b', 'c']print("-".join(["a", "b", "c"])) # a-b-c
详情请参阅:
⚠️ 常见操作误区
1、索引越界
s = "abc"# print(s[5]) # ❌ IndexError: string index out of range
2、不可变性误解
很多初学者尝试直接修改字符,其实字符串不可变,只能通过拼接、切片等生成新对象。
s = "python"# s[0] = "P" ❌ TypeError: 'str' object does not support item assignments = "P" + s[1:] # ✅ 生成新字符串print(s) # Python
3、数字拼接错误
s = "age: " + 18 # ❌ TypeError: can only concatenate str (not "int") to str
正确写法:
s = "age: " + str(18) # age: 18
4、大小写比较陷阱
"Zoo" < "apple" 的结果是 True,因为比较基于 Unicode 编码,不是自然语言规则。
需要无视大小写时,应该先统一 lower() 或 casefold()。
📘 小结
字符串是不可变的有序序列。
索引与切片:通过 [] 和 [:] 访问子串,支持正向、反向和步长
拼接与重复:用 + 拼接,用 * 重复生成
比较与成员运算:比较基于 Unicode 编码,in / not in 判断子串是否存在
遍历与统计:字符串可迭代,可结合 find()、count() 等方法快速检索
内置函数与方法:常用 len()、sorted() 以及 strip()、split()、join() 等方法
“点赞有美意,赞赏是鼓励”