Python怎么去除字符串中间的空格_字符串内部空格删除方法

11次阅读

replace()最直接删除所有半角空格;split()+join()可标准化空白(去首尾、压多空格为一);re.sub()支持条件化精确控制,如删特定位置或全部空白符。

Python怎么去除字符串中间的空格_字符串内部空格删除方法

replace() 删除所有空格最直接

如果目标是把字符串里**所有空格(包括开头、中间、结尾)全干掉**,replace() 是最直白的选择。它不区分位置,只做字符替换。

  • "hello world python".replace(" ", "")"helloworldpython"
  • 注意:只匹配半角空格 " ",制表符 "t"、换行符 "n" 不受影响
  • 性能好,适合简单清洗;但无法保留单词间单空格、只删多余空格等更精细需求

split() + " ".join() 压缩中间空格

当你要的是「把多个连续空格变成一个,同时去掉首尾空格」——也就是标准的“规范化空白”,这是最常用组合。

  • " hello world python ".split() 先按任意空白切分,丢弃空项,得到 ["hello", "world", "python"]
  • " ".join(...) 再用单个空格拼回去 → "hello world python"
  • 它会同时处理 "t""n""r" 和多个空格,比 replace() 更鲁棒
  • 缺点:无法控制“保留两个空格”或“只处理中间、不动首尾”这类定制逻辑

用正则 re.sub() 精确控制空格替换

需要条件化处理时,比如「只删中间的连续空格,首尾空格保留」或「删掉非换行符的空白」,就得上 re 模块。

  • 删所有空白字符(含 tnr):
    import re re.sub(r"s+", "", "hellotworldn  python")  # → "helloworldpython"
  • 只删“非开头非结尾”的连续空格(保留首尾):
    re.sub(r"(?

    (注意这个模式较难写对,实际中较少用)

  • s 默认包含 Unicode 空白,如需严格只匹配 ASCII 空格,用 [ ]+ 或加 flag re.ASCII

警惕 strip()lstrip()/rstrip() 的作用范围

这三个方法**只动首尾,完全不影响中间空格**,常被误认为能“去空格”。如果你发现调了 strip() 但中间空格还在,不是 bug,是设计如此。

立即学习Python免费学习笔记(深入)”;

  • " hello world ".strip()"hello world"(首尾空格没了,中间两个还在)
  • 它们的参数可以指定要删的字符,比如 .strip("x") 删首尾 x,但依然不碰中间
  • 想“只删开头空格”用 lstrip(),“只删结尾”用 rstrip(),别指望它们解决内部问题

真正要处理字符串内部空格,得看清楚目标:全删?压缩?留首尾?还是按规则替换?选错方法会导致结果不符合预期,尤其是把 strip() 当万能解,或者忽略 s" " 的语义差别。

text=ZqhQzanResources