Python如何将文本文件中的多个连续空格替换为单个空格
Python 实现多连续空格替换为单空格的正确方案
原有代码的问题
- Python 中字符串是不可变类型,直接对字符串的单个字符调用
replace()方法不会修改原字符串,执行后的结果是返回新字符串但没有被接收使用,逻辑无效 - 遍历逻辑只覆盖了长度减1的下标,最后一个字符会被遗漏,无法完整写入文件
- 只能处理两个连续空格的场景,3个及以上连续空格无法正确替换
最简实现方案
推荐直接用正则匹配替换,代码逻辑简洁,兼容性好:
import re # 读取源文件 with open("test.234.txt", 'r', encoding='utf-8') as f: raw_content = f.read() # 匹配连续1个以上的普通空格,替换为单个空格 # 如果需要替换所有连续空白(包含制表符、换行符等),可以把正则换成 r'\s+' processed_content = re.sub(r' +', ' ', raw_content) # 写入处理后的内容 with open("test234(double space replaced by singleones)", 'w', encoding='utf-8') as f: f.write(processed_content)
无依赖实现方案
如果不想引入正则模块,也可以用分割后过滤空值再拼接的方式实现:
with open("test.234.txt", 'r', encoding='utf-8') as f: raw_content = f.read() # 按空格分割后过滤掉空字符串,再用单个空格拼接 processed_content = ' '.join([seg for seg in raw_content.split(' ') if seg]) with open("test234(double space replaced by singleones)", 'w', encoding='utf-8') as f: f.write(processed_content)
内容的提问来源于stack exchange,提问作者chitranshu chauhan
相关产品推荐
相关产品推荐

