本问题已经有最佳答案,请猛点这里访问。

我有这根绳子:

mystring = 'Here is  some   text   I      wrote   '

如何将双空格、三空格(…)替换为一个空格,以便:

mystring = 'Here is some text I wrote'

您可能应该说"用一个空格替换多个空格",因为空格是一类字符(制表符、换行符等)。

一个简单的可能性是

' '.join(mystring.split())

split和join执行您明确要求的任务——另外,它们还执行您不谈论但在示例中看到的额外任务,删除尾随空格;-)。

哦,酷,我在摸索一个类似的解决方案,但使用了拆分("")和过滤器来删除空元素。我从不知道分裂,没有这样的论据。这个速度也快得多,timeit.py给了我大约0.74的usec,而正则表达式为5.75的usec。

@是的,是的,x.split()和x.split(None)在空格序列(包括制表符、换行符等)上进行了拆分,就像re's \s的长度为1+,而且速度非常快。所以,总是乐于助人!

这是一个非常优雅的解决方案,但我想说的是,这也将删除任何换行符。

@当然,trudolf,因为换行符是空白的——'

'.isspace()是True——所以任何没有替换的代码都会违反问题的要求(当然,问题的未表达意图可能不同于它的非常明确的表达,但是,读心术不是一种非常广泛的技能——)。

import re

re.sub('\s+', ' ', mystring).strip()

这也将替换所有制表符、换行符和其他类似于空格的字符。

strip()将远程处理任何前导和尾随空格。

如果您真的只想替换空格(""),请使用re.sub(' +', ' ', mystring).strip()

对python 3使用re.sub(r'\s+', ' ', mystring).strip()。

为了完整性,您还可以使用:

mystring = mystring.strip()  # the while loop will leave a trailing space,

# so the trailing whitespace must be dealt with

# before or after the while loop

while '  ' in mystring:

mystring = mystring.replace('  ', ' ')

它可以在空间相对较少的字符串上快速工作(在这种情况下比re更快)。

在任何情况下,Alex Martelli的分割/连接解决方案的执行速度都至少一样快(通常明显更快)。

在您的示例中,使用timeit.timer.repeat()的默认值,我得到以下时间:

str.replace: [1.4317800167340238, 1.4174888149192384, 1.4163512401715934]

re.sub:      [3.741931446594549,  3.8389395858970374, 3.973777672860706]

split/join:  [0.6530919432498195, 0.6252146571700905, 0.6346594329726258]

< BR>编辑:

刚刚看到这篇文章,它提供了这些方法的速度的相当长的比较。

线条比其他线条多,因此"Python"更少,但更清晰。

string.replace(" ","")

所有偶数空格都被删除

如果您只有两个空格,并且不能完全解决问题,那么这将导致错误。

错了。对于给定的例子,它甚至不起作用,因为它会导致'Here issome text Iwrote '。

python中空格替换_在Python中用单个空格替换多个空格相关推荐

  1. python中 什么意思_请问python中%代表什么意思?

    婷婷同学_ 1.格式符例如:a = 'test'print 'it is a %s' %(a)打印的结果就是 it is a test2.单独看%,是一个运算符号,求余数.例如:求模运算,相当于mod ...

  2. 在python中设置密码登录_在python中生成密码

    在python中生成密码 我想在python中生成一些字母数字密码. 一些可能的方法是: import string from random import sample, choice chars = ...

  3. lambda在python中的用法_在python中对lambda使用.assign()方法

    我在Python中运行以下代码:#Declaring these now for later use in the plots TOP_CAP_TITLE = 'Top 10 market capit ...

  4. python中的帮助_在Python中使用help帮助

    原博文 2014-10-18 23:21 − 在Python中使用help帮助 >>> import numpy >>> help(numpy.argsort) H ...

  5. python中class变量_对python 中class与变量的使用方法详解

    python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键. #!/usr/bin/python #encoding ...

  6. python中__init__方法_关于python中__init__方法理解

    在理解__init__方法之前,我们需要搞明白,什么时候才需要用到的这个方法 什么是__init__? __init__方法在python中是类的初始化,通俗来讲,就是每次只要你去创建一个类的实例对象 ...

  7. python中if控制语句_了解Python控制流语句——if语句

    控制流 截止到现在,在我们所看过的程序中,总是有一系列语句从上到下精确排列,并交由 Python 忠实地执行.如果你想改变这一工作流程,应该怎么做?就像这样的情况:你需要程序作出一些决定,并依据不同的 ...

  8. python中合并列表_关于python:如何将两个列表合并到一个列表中?

    我有 a = [1, 2] b = ['a', 'b'] 我想要 c = [1, 'a', 2, 'b'] 号 @cdleary's answer stackoverflow.com/question ...

  9. python中select模块_基于python select.select模块通信的实例讲解 如何用python写个串口通信的程序...

    python socket怎么利用select实现双工通信 方法: Before : 0000000000000000000000000000000000000000 After pack: 0100 ...

  10. loop在python中什么意思_在python中使用loop打开多个文件

    基本上,我试图根据列表的名称打开多个文件. 我在日志/中有以下名称的文件here is the dir structure script---myfile.py | |----Log/*.txt fo ...

最新文章

  1. 硬核教程:五步掌握用VSCode进行高效Python开发
  2. 【 C 】结构的自引用
  3. js检测、控制表单输入必须为中文
  4. 打开vs没有解决方案_汇编环境配置+简单示例(masm+VS+Win10)
  5. POJ3160强连通+spfa最长路(不错)
  6. iOS图片编辑功能实现
  7. 4位16色灰度图像处理
  8. mysql engine 和type_type=INNODB和engine=INNODB的区别
  9. 为什么把钱花在别人身上更幸福?
  10. 如何高效地远程部署?Fabric 来支招!
  11. android平板机,HTC首款Android平板机发布
  12. java7创建线程_Java 并发编程学习(七):正确地创建线程池
  13. Pyqt之exec()和show()与弹出自定义对话框
  14. 大会回顾丨游戏用户体验优化如何实践,看大咖怎么说(附PPT下载)
  15. Spring Cloud使用Dubbo实现Rpc调用失败之配置错误
  16. 了解和掌握Python的函数(文末附python学习资料)
  17. 如何修复Outlook已发送邮件丢失的问题
  18. 发烧友labviEW随手练小试牛刀,精美奖品轻松拿,期待你的参与
  19. 阿里云服务器搭建使用教程(四)域名使用及备案
  20. jQuery 图像 360 度旋转插件

热门文章

  1. 小米路由器浏览器连不上网的问题
  2. pyautogui.locateOnScreen()找不到图像的办法
  3. jszip实现多层目录以及目录下文件打包
  4. 【Redis二三事】一套超详细的Redis学习教程(步骤图片+实操)---第二集
  5. iframe放大显示_iframe操作 调整大小
  6. python打开手机网页_Python selenium 用chrome的Mobile emulation模拟手机浏览器测试手机网页...
  7. 开发工具|H5微应用本地开发新姿势
  8. 易班2016.net SDK RestSharp access_token获取错误 解决方案
  9. “设备回收”功能模块记录
  10. 教程▍一步步上手TensorFlow——基础知识