Python 字符串秘籍:写代码的人都该背的小抄

许多人学 Python,一上来先接触的就是“字符串”。 为什么?由于你每天都要跟文本打交道:处理日志、分析数据、爬网页、甚至写个简单的打印语句,背后都离不开字符串。

但是,许多初学者用字符串就停留在最基本的拼接、打印、切片。真正能把字符串用到“飞起”的人,实则不多。 而 Python 贴心地给我们准备了一整套字符串方法,用好了,它们就是写代码时的一把“瑞士军刀”。

今天这篇文章,我想带你系统地走一遍 Python 字符串的常用方法。别担心,我不会把它写成枯燥的官方文档,而是带你像看“秘籍”一样,边看边会心一笑。看完,你会发现: 处理字符串,实则比泡茶还顺手。

Python 字符串秘籍:写代码的人都该背的小抄


一、大小写:文字里的“声调”

我们先从最直观的大小写说起。 人类说话有声调,Python 的字符串也有“声调”。想把文字变大声、变小声、翻转风格,几行代码就搞定。

print("mediaTEA".lower())   # mediatea
print("mediaTEA".upper())   # MEDIATEA
  • lower():全变小写,就像你在微信里说“别吵,我小声说”。
  • upper():全变大写,瞬间变成“狮吼功”。

那如果你只想让开头有点仪式感呢?

print("hello world".capitalize())  # Hello world
print("hello world".title())  # Hello World
  • capitalize():第一个字母大写,其他小写,像正式开会时的开场白。
  • title():每个单词首字母都大写,特别像英文书名。

还有两个更有趣的:

print("mediaTEA".swapcase())  # MEDIAtea
print("Straße".casefold())  # strasse
  • swapcase():反转大小写,瞬间给人“另一种性格”的感觉。
  • casefold():这是“国际友善版”的小写转换,连德语里的 ß 都能搞定。对比大小写时特别好用。

小提示:写爬虫或者做数据清洗时,最常见的操作就是“忽略大小写”。这时候 casefold() 往往比 lower() 更靠谱。


二、查找与统计:在大海里找贝壳

想象你在沙滩上捡贝壳,有时候你要找第一个闪亮的,有时候要找最后一个。Python 给你准备了不同的“放大镜”。

s = "banana"
print(s.find("na"))     # 2
print(s.find("na", 3))  # 4
print(s.find("xy"))     # -1
  • find():找到子串出现的位置,找不到就老实告知你 -1。
  • rfind():从右边开始找,像倒着看沙滩。
  • index() / rindex():跟上面类似,但更“暴躁”——没找到就直接报错。

再列如,你想知道沙滩上到底有几个贝壳:

print("banana".count("na"))  # 2

count() 就是专门干统计的。

这些方法特别适合日志分析,列如查某个关键字出现了多少次,或者定位它的具体位置。


三、拆分与连接:切菜和拌菜

字符串的“拆和合”,就像厨房里的切菜和拌菜。 你可以把它劈开一份份,也可以拌在一起端上桌。

s = "a b c"
print(s.split())        # ['a', 'b', 'c']
print(s.split(" ", 1))  # ['a', 'b c']
print("a b c".rsplit(" ", 1))  # ['a b', 'c']
  • split():从左边切。
  • rsplit():从右边切。
  • splitlines():专门切“换行”的。

再列如:

print("hello mediaTEA world".partition(" "))  
# ('hello', ' ', 'mediaTEA world')

print("hello mediaTEA world".rpartition(" ")) 
# ('hello mediaTEA', ' ', 'world')
  • partition()rpartition() 就像夹心饼干,把分隔符和两边的部分都保留下来。

那如果你想把一盘菜重新拼在一起?

words = ["a", "b", "c"]
print("-".join(words))   # a-b-c

join() 就是搅拌器,把食材合成新的一道菜。 写 CSV、生成路径、拼接 SQL 时,它超级常见。


四、判断:做“体检”

有时候你得问问字符串自己:“你身体合格吗?” Python 给它准备了一套“体检表”。

print("abc".isalpha())   # True
print("abc123".isalnum())   # True
print("123".isdigit())      # True
print("123".isdecimal())  # True
print("一二三".isnumeric())  # True
print("   ".isspace())      # True
  • isalpha():是不是全字母?
  • isdigit() / isdecimal() / isnumeric():是不是数字?区别在于:
  • isdigit():数字字符。
  • isdecimal():严格的十进制。
  • isnumeric():还包括中文“一二三”。

这套检查不止这些,还有:

print("hello".islower())       # True
print("HELLO".isupper())       # True
print("Hello World".istitle()) # True
print("abc".isascii())         # True
print("user_name".isidentifier()) # True
print("Hello
World".isprintable())  # False

这些方法在做输入校验时特别好用,列如:

  • 注册用户名只能用字母数字下划线,就要用 isidentifier()
  • 判断文本是不是全英文,用 isascii()
  • 检查是不是全空格,用 isspace()

五、对齐与填充:排队站好

生活里有个场景:学生合影时,老师总喊“左边一点,右边一点”。 Python 也能帮字符串“排整齐”。

print("hi".ljust(5, "-"))  # hi---
print("hi".rjust(5, "-"))  # ---hi
print("hi".center(5, "-"))  # --hi-
print("42".zfill(5))  # 00042
  • ljust():左对齐,右边补。
  • rjust():右对齐,左边补。
  • center():居中,两边补。
  • zfill():专门在前面补 0,常见于编号、日期。

这类方法在输出表格、打印报表、格式化数据时超有用。


六、替换与删除:换装与减肥

字符串也会“换衣服”或者“减肥瘦身”。

s = "apple apple"
print(s.replace("apple", "orange"))      # orange orange
print(s.replace("apple", "orange", 1))   # orange apple
  • replace():直接替换,可以控制次数。
print("abc	def".expandtabs())       # 'abc     def'
print("abc	def".expandtabs(4))     # 'abc def'
  • expandtabs():把 换成空格,适合处理日志。

更灵活的是格式化:

print("Hello, {}!".format("world"))              
print("{0} + {0} = {1}".format("a", "2a"))       
print("{name} is {age} years old".format(name="mediaTEA", age=7))
  • format()format_map() 就像是给字符串穿“定制西装”,随你填参数。

再列如清理:

print(" hello ".strip())      # "hello"
print("..hi..".strip("."))    # "hi"
print("xxhelloxx".lstrip("x"))  # "helloxx"
print("xxhelloxx".rstrip("x"))  # "xxhello"
print("unhappy".removeprefix("un"))     # happy
print("data.csv".removesuffix(".csv"))  # data
  • strip() / lstrip() / rstrip():去掉头尾的空白或指定字符。
  • removeprefix() / removesuffix():精准去前缀或后缀,不改中间内容。

这在处理文件名、清洗 URL 时特别实用。


七、编码与解码:不同语言的翻译官

当你跟不同国家的人交流时,需要翻译官。 字符串在 Python 世界里就是 Unicode,而存储或传输时,必须转成 bytes。

print("你好".encode())              # b'xe4xbdxa0xe5xa5xbd'
print("abc".encode('ascii'))        # b'abc'
print("你好".encode('ascii', errors='ignore'))  # b''
  • encode():把字符串翻译成字节串。
  • 参数 errors:可以忽略、替换或报错。

解码的时候,用 decode()

b = b'xe4xbdxa0xe5xa5xbd'
print(b.decode("utf-8"))  # 你好

这一块在网络传输、文件保存时必不可少。


八、批量替换:大规模换血

如果你要一次性改掉一堆字符,用 replace() 就显得笨。 这时候 maketrans() + translate() 就像批量操作。

table = str.maketrans("abc", "123")
print("abc cab".translate(table))  # 123 321

table = str.maketrans({"-": "", "_": " "})
print("data-set_v1".translate(table))  # dataset v1

table = str.maketrans({"a": None})
print("banana".translate(table))  # bnn

这招效率高,还能直接删除指定字符。 列如清洗数据、重命名变量时,特别有感觉。


小结:学会“十八般武艺”

到这里,我们几乎走了一遍 Python 字符串的“江湖招式”。 从大小写转换、查找统计,到拆分拼接、替换清理,再到对齐格式化、编码解码,最后是批量替换。

可以说,字符串的方法就是你写 Python 时的“基本功”。 写得多了,你会发现:

  • 它们能帮你把许多原本 10 行的代码压缩成 1 行;
  • 能让你处理文本的效率翻倍;
  • 更重大的是,写出来的代码又简洁又优雅。

就像练武功,剑法刀法枪法都懂一些,你走江湖时才更稳。


如果你看到这里,不妨动手把这些方法亲自敲一遍,试着改改参数,看输出的变化。 熟悉之后,你会发现,Python 的字符串就像一块好钢,越打磨越顺手。


“收藏这篇文章,下次写代码不求人”

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
雨下无猫的头像 - 鹿快
评论 共2条

请登录后发表评论