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

19次阅读

最快清除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(' ', '') 单用——它只删空格,漏掉 tn
  • 注意:多次 replace() 会生成新字符串,原字符串不变(python 字符串不可变)

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

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

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

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

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

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

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

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

立即学习Python免费学习笔记(深入)”;

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

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

text=ZqhQzanResources