
本文介绍多种在 Python 中去除字符串空格后计算长度的方法,包括使用 replace()、split() 与 join() 组合、以及正则表达式等,适合初学者快速掌握高效处理姓名字符串的技巧。
本文介绍多种在 python 中去除字符串空格后计算长度的方法,包括使用 replace()、split() 与 join() 组合、以及正则表达式等,适合初学者快速掌握高效处理姓名字符串的技巧。
在处理用户输入的姓名(如 "John Smith")时,len() 函数默认统计所有字符,包括空格——这会导致结果为 10 而非实际字母数 9。要准确获取“无空格长度”,关键在于先移除所有空白字符,再计算长度。以下是几种清晰、可靠且符合 Python 风格的实现方式:
✅ 推荐方法一:使用 str.replace()(最简洁直观)
full_name = input("What is your name? ")
length_without_spaces = len(full_name.replace(" ", ""))
print(f"Length without spaces: {length_without_spaces}")✅ 优点:代码短、易读、专用于去除半角空格;
⚠️ 注意:仅替换 ASCII 空格(' '),不处理制表符\t或换行符\n。
✅ 推荐方法二:使用 str.split() + ''.join()(兼容多空格/首尾空格)
full_name = input("What is your name? ")
length_without_spaces = len(''.join(full_name.split()))
print(f"Length without ANY whitespace: {length_without_spaces}")✅ 优点:
split()默认按任意空白字符(空格、制表、换行等)分割,并自动忽略首尾空白,''.join()合并后即得纯字符字符串;
? 示例:" John \t Smith\n ".split()→['John', 'Smith']→''.join(...)→'JohnSmith'
✅ 进阶方法:用正则表达式 re.sub()(彻底清除所有 Unicode 空白)
import re
full_name = input("What is your name? ")
cleaned = re.sub(r'\s+', '', full_name) # \s 匹配所有空白字符(含全角空格、不间断空格等)
length_without_whitespace = len(cleaned)
print(f"Length without ANY whitespace (Unicode-safe): {length_without_whitespace}")✅ 适用场景:需处理国际化输入(如含中文全角空格
、零宽空格等);
? 提示:普通姓名场景中,前两种已完全足够,无需引入re。
❌ 不推荐的写法(避免手动遍历或数组操作)
初学者有时会尝试用循环逐个判断字符:
# ❌ 冗余、低效、易出错
length = 0
for char in full_name:
if char != ' ':
length += 1Python 的内置字符串方法已高度优化,应优先使用声明式操作(如 replace、split),而非过程式循环。
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
总结建议
-
入门首选:
full_name.replace(' ', '')—— 简单明确,语义清晰; -
健壮通用:
''.join(full_name.split())—— 自动清理所有空白类型,零配置更安全; - 无需额外逻辑:不必使用列表索引、数组或复杂条件判断;
-
延伸思考:若还需进一步清洗(如去标点、转小写),可链式调用:
len(''.join(full_name.split()).lower().strip())
掌握这些方法,你不仅能正确计算姓名长度,也为后续字符串清洗、数据预处理打下坚实基础。
立即学习“Python免费学习笔记(深入)”;

















