在日常开发、数据清洗或爬虫任务中,字符串处理是最高频的操作之一。如果每次都要写多行循环或条件判断,不仅代码冗长,效率也低。本文整理18个一行代码即可完成的Python字符串处理技巧,涵盖大小写转换、去空格、分割拼接、替换、查找提取、反转去重以及正则清洗等场景,全部无需多行逻辑,直接复制使用。
一、基础格式处理
以下例子假设变量 s = " Python 实战 123!hello "。
- # 去除首尾空格
- s.strip()
- # 全部转大写
- s.upper()
- # 全部转小写
- s.lower()
- # 首字母大写(每个单词首字母)
- s.title()
- # 大小写互换
- s.swapcase()
- # 去除所有空格(首尾+中间)
- s.replace(" ", "")
- # 将多个连续空格合并为一个空格
- ' '.join(s.split())
复制代码
二、分割、拼接、替换
- s = "a,b;c d|e"
- # 按多种符号分割(逗号、分号、空格、竖线),使用正则一行实现
- import re; re.split(r"[,; |]", s)
- # 将列表拼接为字符串
- lst = ["Python", "实战", "字符串"]; ''.join(lst)
- # 替换所有指定字符
- s.replace("a", "A")
- # 替换多个不同字符(用 translate + maketrans)
- s.translate(str.maketrans({',':'', ';':'', '|':''}))
复制代码
三、判断、查找、提取
- s = "Python123"
- # 判断是否全是字母
- s.isalpha()
- # 判断是否全是数字
- s.isdigit()
- # 提取字符串中所有数字(列表推导式一行)
- ''.join([i for i in s if i.isdigit()])
- # 提取字符串中所有字母
- ''.join([i for i in s if i.isalpha()])
- # 判断是否包含子串
- "Python" in s
复制代码
四、高级实用技巧
- s = "Python"
- # 字符串反转(切片)
- s[::-1]
- # 字符串去重并保持原顺序
- ''.join(sorted(set(s), key=s.index))
复制代码
五、最常用组合:一行清洗脏文本
爬虫或数据清洗中最常见需求是去掉空格、转小写、清除特殊符号。用 re.sub 可一行完成:
- s = " Hello@Python#实战123! "
- clean_s = re.sub(r'[^a-zA-Z0-9\u4e00-\u9fa5]', '', s.strip().lower())
复制代码
六、扩展技巧与适用场景
上述技巧可灵活组合,例如提取数字、统计单词频率等也常用一行式写法。下面补充几个高频场景:
- # 从字符串中提取所有数字(返回列表)
- import re; re.findall(r'\d+', 'ab12cd34ef')
- # 判断是否为回文(忽略空格和大小写)
- t = "A man a plan a canal Panama"
- t.replace(' ', '').lower() == t.replace(' ', '').lower()[::-1]
- # 统计单词频率
- from collections import Counter; Counter("hello world hello".split())
- # 批量替换多个字符
- s = "Hello@World#"
- s.translate(str.maketrans({'@':' ', '#':''}))
复制代码
七、总结速记
- 去空格:strip() / replace(" ", "") / ' '.join(s.split())
- 大小写:upper() / lower() / title()
- 分割拼接:split() / join()
- 提取数字/字母:列表推导式一行
- 反转:[::-1]
- 清洗文本:re.sub() 最强
以上18个一行代码覆盖了字符串处理的核心场景,工作中直接套用即可提升效率。 |