

新闻资讯
技术学院最快清除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')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()
真正难的是识别哪些“空白”该删、哪些不该删——比如数学公式里的空格、代码缩进、富文本中的不可见分隔符。没有银弹,得看数据来源和业务语义。