zsj007
蓝桥python学习系列

一、字符串的 “花式” 写法

Python 里字符串不只有一种写法,不同场景用不同引号会更方便:

  1. 单双引号互嵌
    如果字符串里本身就有引号,直接用另一种引号包起来就行,不用转义!
    比如想输出 She said, 'Hello!',直接写:
s1 = "She said, 'Hello!'"
print(s1)
  1. 三重引号:多行字符串神器
    想写一段带换行的文本?用 ''' 或者 """ 把内容包起来,换行符会被自动保留,不用手动加 \n:
s2 = """User:
Name: Alice
ID: 101"""
print(s2)

输出的时候会原样保留换行,特别适合写长文本或者多行注释。

  1. 字面值合并:拆分长字符串更清晰
    如果字符串太长一行写不下,可以把它拆成好几段,Python 会自动把相邻的字符串合并成一个:
s3 = "Python is " "very" " fun."
print(s3)  # 输出:Python is very fun.

中间可以加空格或者换行,不影响最终结果,代码看起来更整洁。

二、转义字符与原始字符串

  1. “讨厌的反斜杠"可以用原始字符串解决
    普通字符串里 \ 是转义字符,比如 \n 代表换行,\t 代表制表符。但写 Windows 文件路径或者正则表达式时,我们希望 \ 就是普通的反斜杠,这时候就用原始字符串:在引号前加个 r 就行。
    对比一下:
# 普通字符串:要写两个反斜杠才能表示一个\
path1 = "C:\\Users\\new_folder"
# 原始字符串:直接写\就可以
path2 = r"C:\Users\new_folder"

print(f"Normal: {path1}")
print(f"Raw: {path2}")

输出结果是一样的,但原始字符串写法更直观!
注意:原始字符串末尾不能是奇数个反斜杠,不然会报错。

  1. 竞赛里的制表符 \t
    课上老师特意说,竞赛里几乎不会遇到 \t,而且格式化对齐输出尽量用 f-string,别用制表符,不然不同环境下对齐会乱掉。

三、字符串常用操作方法

  1. 大小写转换
    Python 给了好几个方法,能快速改变字符串大小写:
    .upper():全转大写
    .lower():全转小写
    .swapcase():大小写互换
    举个例子:
s = "heLLo, pyTHon 123!"
print(f"upper: {s.upper()}")   # 输出 HELLO, PYTHON 123!
print(f"lower: {s.lower()}")   # 输出 hello, python 123!
print(f"swapcase: {s.swapcase()}")  # 输出 HEllO, PYtHOn 123!

数字和符号不会被改变,只会处理字母。

  1. 去除空白字符
    处理用户输入或者文件数据时,经常要去掉字符串前后多余的空格、换行符:
    .strip():去掉前后所有空白
    .lstrip():只去掉开头的空白
    .rstrip():只去掉结尾的空白
s = "  hello, world!  "
print(f"strip: '{s.strip()}'")    # 输出 'hello, world!'
print(f"lstrip: '{s.lstrip()}'")  # 输出 'hello, world!  '
print(f"rstrip: '{s.rstrip()}'")  # 输出 '  hello, world!'

还可以指定要去除的字符,比如 .strip('!') 就能去掉前后的感叹号。

  1. 查找与替换
    想在字符串里找东西或者替换内容,用这些方法:
    .find(sub):找子字符串,找到返回索引,找不到返回 -1
    .index(sub):和 find 类似,但找不到会报错
    .replace(old, new):把旧子串替换成新子串
    .count(sub):统计子串出现的次数
print(s.find("world"))  # 输出 7
print(s.replace("world", "Python"))  # 输出 hello, Python!
print(s.count("l"))     # 输出 3
  1. 分割与连接
    把字符串拆成列表,或者把列表拼成字符串,是很常见的操作:
    .split(sep):用分隔符 sep 把字符串切成列表
    sep.join(iterable):用分隔符把可迭代对象(比如列表)拼成字符串
s = "apple,banana,cherry"
words = s.split(',')  # 得到 ['apple', 'banana', 'cherry']
new_s = "-".join(words)  # 得到 "apple-banana-cherry"
  1. 字符类型检查
    想判断字符串是不是全小写、全大写,或者是不是空白字符?用这些方法:
    .islower():判断是否全小写(至少有一个字母)
    .isupper():判断是否全大写(至少有一个字母)
    .isspace():判断是否只包含空白字符
print('python123'.islower())  # True
print('PYTHON123'.isupper())  # True
print('   '.isspace())        # True

四、字符串不可变性:不能直接改字符!

这里踩过坑!Python 的字符串是不可变的,不能像列表那样直接改某个位置的字符:

s = "hello"
s[0] = 'H'  # 会报错 TypeError!

想修改的话,要先转成列表,改完再拼回去:

s = "hello"
temp_list = list(s)
temp_list[0] = 'H'
new_s = "".join(temp_list)  # 得到 "Hello"

这个套路在竞赛里很常用,一定要记住

五、子字符串检查

用 in 和 not in 可以快速判断一个字符串是否包含另一个:

s = "hello, world!"
print('world' in s)       # True
print('spam' not in s)    # True

注意:字符串的 in 是检查子字符串,和列表检查独立元素不一样,比如 'ell' in 'hello' 是 True,但列表里 'ell' in ['h','e','l','l','o'] 就是 False。

六、总结

这节课学的字符串知识点还挺多的,从基础写法到各种方法,感觉字符串是 Python 里很灵活的一部分。刚开始容易搞混转义字符和原始字符串,还有字符串不可变性的坑,多写几个例子就熟啦

posted on 2026-03-17 22:22  予佳  阅读(32)  评论(0)    收藏  举报