Python如何删除字符串字符间多余空格实现字符串规范化
问题描述
如何在Python中删除字符串字符间的多余空格,对字符间包含冗余空格的字符串进行规范化处理?
- 原始待处理字符串示例:
'I n e e d t o d e l e t e t h e e x t r a w h i t e s p a c e b e t w e e n c h a r a c t e r s'
- 期望转换后的目标结果:
'I need to delete the extra whitespace between characters'
解决方案
这类字符串的特征很明确:单词内部的字母被错误插入了单个空格,单词和单词之间保留了2个及以上的空格作为间隔,按这个特征拆分处理即可,提供两种常用实现:
方法1:无需引入依赖的基础实现
不需要导入额外模块,直接用字符串内置方法就能处理,适配示例场景:
raw_str = 'I n e e d t o d e l e t e t h e e x t r a w h i t e s p a c e b e t w e e n c h a r a c t e r s' # 1. 按2个连续空格拆分字符串,得到每个被打散的单词片段 # 2. 遍历每个片段,删除片段内的所有空格还原正确单词 # 3. 用单个空格拼接所有单词得到最终结果 normalized_str = ' '.join(part.replace(' ', '') for part in raw_str.split(' ')) print(normalized_str) # 输出:I need to delete the extra whitespace between characters
如果字符串首尾可能存在多余空格,可以在拆分前先调用strip()去除首尾空白,避免生成空片段:
raw_str = ' I n e e d t o d e l e t e t h e e x t r a w h i t e s p a c e b e t w e e n c h a r a c t e r s ' normalized_str = ' '.join(part.replace(' ', '') for part in raw_str.strip().split(' '))
方法2:正则通用实现(适配任意单词间隔长度)
如果单词之间的空格数量不固定(可能是2个、3个甚至更多),可以用正则按「2个及以上连续空格」做拆分,兼容性更强:
import re raw_str = 'I n e e d t o d e l e t e t h e e x t r a w h i t e s p a c e b e t w e e n c h a r a c t e r s' normalized_str = ' '.join(part.replace(' ', '') for part in re.split(r'\s{2,}', raw_str.strip())) print(normalized_str) # 输出:I need to delete the extra whitespace between characters
处理逻辑说明
整个处理流程分三步,适配绝大多数同类字符打散的空格冗余场景:
- 预处理:先去除字符串首尾的多余空白
- 拆分:以连续2个及以上的空格为分隔符,把字符串拆成多个片段,每个片段对应一个被单空格打散的完整单词
- 还原拼接:每个片段删除内部所有单空格得到正确单词,最后用单个空格把所有单词拼接成规范字符串
内容的提问来源于stack exchange,提问作者Romero-Reina Juan
相关产品推荐
相关产品推荐

