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

用 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' 也当空格吃掉)。
1、对ASP内核代码进行DLL封装,从而大大提高了用户的访问速度和安全性;2、采用后台生成HTML网页的格式,使程序访问速度得到进一步的提升;3、用户可发展下级会员并在下级购买商品时获得差额利润;4、全新模板选择功能;5、后台增加磁盘绑定功能;6、后台增加库存查询功能;7、后台增加财务统计功能;8、后台面值类型批量设定;9、后台财务曲线报表显示;10、完善订单功能;11、对所有传输的字符串进行安全
立即学习“Python免费学习笔记(深入)”;
-
text.strip()→ 只影响开头结尾,中间空格原样保留 -
''.join(text.split())→ 会误杀所有空白并合并,'a\tb'变成'ab',但'a b'也变成'ab',行为不可控 - 除非你明确需要「规范化空白为单空格再清空」,否则不要用
split()+join()
真正难的是识别哪些“空白”该删、哪些不该删——比如数学公式里的空格、代码缩进、富文本中的不可见分隔符。没有银弹,得看数据来源和业务语义。









