登录
首页 >  文章 >  python教程

Python去除字符串空格的几种方法

时间:2026-01-29 14:09:44 148浏览 收藏

你在学习文章相关的知识吗?本文《Python去除字符串所有空格方法详解》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

最快清除ASCII空格用链式replace():text.replace(' ','').replace('\t','').replace('\n','').replace('\r','');Unicode空格需re.sub()或translate()。

Python去除字符串所有空格_完全清除字符串中所有空格字符

replace() 最快清除所有 ASCII 空格

如果字符串里只有普通空格(' ')、制表符('\t')、换行('\n')、回车('\r'),直接链式调用 replace() 效率最高,比正则还快。

  • text.replace(' ', '').replace('\t', '').replace('\n', '').replace('\r', '')
  • 不推荐 replace(' ', '') 单用——它只删空格,漏掉 \t\n
  • 注意:多次 replace() 会生成新字符串,原字符串不变(Python 字符串不可变)

re.sub() 清除所有 Unicode 空格字符

当字符串含全角空格(' ')、不间断空格('\xa0')、零宽空格('\u200b')等 Unicode 空格时,必须用正则匹配 \s 或更严格的 \p{Z}(需 regex 模块)。

import re
text = "hello world\t\n\xa0"
cleaned = re.sub(r'\s+', '', text)  # \s 匹配 [\t\n\r\f\v] + 空格,但不包含全角空格
# 若需真正“所有空格字符”,用:
# cleaned = re.sub(r'[\s\u3000\xa0\u2000-\u200f\u2028-\u2029]+', '', text)
  • \s 在 Python 标准 re 中默认不匹配全角空格('\u3000')和 NBSP('\xa0'
  • 实际项目中建议显式列出常见 Unicode 空格范围,避免依赖 locale 或 Python 版本差异

str.translate() 是内存友好型批量处理方案

处理大量字符串(如读取 CSV、日志行)时,translate() 比循环或正则快 3–5 倍,尤其适合预定义清除规则。

import string
# 构建删除所有常见空白字符的 table
remove_chars = '\t\n\r\f\v ' + '\u3000\xa0\u200b'
translator = str.maketrans('', '', remove_chars)
text = "a b\tc\n"
cleaned = text.translate(translator)
  • str.maketrans() 第三个参数传入要删除的字符组成的字符串
  • 该方法不支持正则,也不能动态扩展;适合已知固定字符集的清洗场景
  • 注意:全角空格 '\u3000' 和零宽空格 '\u200b' 必须显式加入 remove_chars,否则不会被删

别忽略 strip()split()+join() 的适用边界

strip() 只去首尾,split()+join() 看似简洁,但有严重副作用:它会把连续多个空格压缩成一个,且无法区分空格类型(比如把 '\t' 也当空格吃掉)。

  • text.strip() → 只影响开头结尾,中间空格原样保留
  • ''.join(text.split()) → 会误杀所有空白并合并,'a\tb' 变成 'ab',但 'a b' 也变成 'ab',行为不可控
  • 除非你明确需要「规范化空白为单空格再清空」,否则不要用 split()+join()

真正难的是识别哪些“空白”该删、哪些不该删——比如数学公式里的空格、代码缩进、富文本中的不可见分隔符。没有银弹,得看数据来源和业务语义。

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>