查看: 169|回复: 3

Python一行代码字符串处理实战:去空格、提取数字、正则清洗

[复制链接]
发表于 4 小时前 | 显示全部楼层 |阅读模式
在日常开发、数据清洗或爬虫任务中,字符串处理是最高频的操作之一。如果每次都要写多行循环或条件判断,不仅代码冗长,效率也低。本文整理18个一行代码即可完成的Python字符串处理技巧,涵盖大小写转换、去空格、分割拼接、替换、查找提取、反转去重以及正则清洗等场景,全部无需多行逻辑,直接复制使用。

一、基础格式处理

以下例子假设变量 s = " Python 实战 123!hello "。
  1. # 去除首尾空格
  2. s.strip()
  3. # 全部转大写
  4. s.upper()
  5. # 全部转小写
  6. s.lower()
  7. # 首字母大写(每个单词首字母)
  8. s.title()
  9. # 大小写互换
  10. s.swapcase()
  11. # 去除所有空格(首尾+中间)
  12. s.replace(" ", "")
  13. # 将多个连续空格合并为一个空格
  14. ' '.join(s.split())
复制代码

二、分割、拼接、替换
  1. s = "a,b;c d|e"
  2. # 按多种符号分割(逗号、分号、空格、竖线),使用正则一行实现
  3. import re; re.split(r"[,; |]", s)
  4. # 将列表拼接为字符串
  5. lst = ["Python", "实战", "字符串"]; ''.join(lst)
  6. # 替换所有指定字符
  7. s.replace("a", "A")
  8. # 替换多个不同字符(用 translate + maketrans)
  9. s.translate(str.maketrans({',':'', ';':'', '|':''}))
复制代码

三、判断、查找、提取
  1. s = "Python123"
  2. # 判断是否全是字母
  3. s.isalpha()
  4. # 判断是否全是数字
  5. s.isdigit()
  6. # 提取字符串中所有数字(列表推导式一行)
  7. ''.join([i for i in s if i.isdigit()])
  8. # 提取字符串中所有字母
  9. ''.join([i for i in s if i.isalpha()])
  10. # 判断是否包含子串
  11. "Python" in s
复制代码

四、高级实用技巧
  1. s = "Python"
  2. # 字符串反转(切片)
  3. s[::-1]
  4. # 字符串去重并保持原顺序
  5. ''.join(sorted(set(s), key=s.index))
复制代码

五、最常用组合:一行清洗脏文本

爬虫或数据清洗中最常见需求是去掉空格、转小写、清除特殊符号。用 re.sub 可一行完成:
  1. s = " Hello@Python#实战123! "
  2. clean_s = re.sub(r'[^a-zA-Z0-9\u4e00-\u9fa5]', '', s.strip().lower())
复制代码

六、扩展技巧与适用场景

上述技巧可灵活组合,例如提取数字、统计单词频率等也常用一行式写法。下面补充几个高频场景:
  1. # 从字符串中提取所有数字(返回列表)
  2. import re; re.findall(r'\d+', 'ab12cd34ef')
  3. # 判断是否为回文(忽略空格和大小写)
  4. t = "A man a plan a canal Panama"
  5. t.replace(' ', '').lower() == t.replace(' ', '').lower()[::-1]
  6. # 统计单词频率
  7. from collections import Counter; Counter("hello world hello".split())
  8. # 批量替换多个字符
  9. s = "Hello@World#"
  10. s.translate(str.maketrans({'@':' ', '#':''}))
复制代码

七、总结速记

- 去空格:strip() / replace(" ", "") / ' '.join(s.split())
- 大小写:upper() / lower() / title()
- 分割拼接:split() / join()
- 提取数字/字母:列表推导式一行
- 反转:[::-1]
- 清洗文本:re.sub() 最强

以上18个一行代码覆盖了字符串处理的核心场景,工作中直接套用即可提升效率。
回复

使用道具 举报

发表于 4 小时前 | 显示全部楼层

Re: Python一行代码字符串处理实战:去空格、提取数字、正则清洗

感谢分享,都是非常实用的日常小技巧!特别是 `re.sub` 一行清洗脏文本和 `sorted(set(s), key=s.index)` 保持顺序去重这两招,平时写的时候总想不起来这么简洁的写法,收藏了。
回复 支持 反对

使用道具 举报

发表于 4 小时前 | 显示全部楼层

Re: Python一行代码字符串处理实战:去空格、提取数字、正则清洗

感谢分享!这些一行代码技巧非常实用,特别是 `re.sub` 清洗脏文本和 `re.split` 多符号分割,平时写爬虫和清洗数据经常用到。我之前一直用 `str.translate` 去标点,没想到还可以结合 `maketrans` 传字典,更灵活了。另外,去重保持顺序用 `key=s.index` 这段很巧妙,之前我都是自己写循环,以后可以直接套用了。收藏了!
回复 支持 反对

使用道具 举报

发表于 4 小时前 | 显示全部楼层

Re: Python一行代码字符串处理实战:去空格、提取数字、正则清洗

感谢分享,总结得很实用!特别是正则清洗和多种分隔符分割那两部分,平时写爬虫清洗数据时直接套用能省不少时间。另外建议可以在“提取数字”后面加个带小数点的版本:`re.findall(r'\d+\.?\d*', s)`,有时候数据里会有浮点数。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-25 14:10 , Processed in 0.031635 second(s), 17 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部