我如何才能放松单词之间的空间而不能放松短语之间的空间

时间:2019-04-03 22:21:39

标签: python-3.x

我有一个字符串,我想减少该字符串之间的连续字符,因为我将来仍想将其转换回列表,但是我失去了一些单词之间的所有空格

我是python编程语言的新手。我尝试使用join函数,但是我失去了所有空格

text = 'waiting / / wave / crest / / / wavelength services / / despite / / / / product / '

new_text = ''.join([i for i in new.replace(" ", "").split('') if i])

print(new_text)

我想要

"waiting/wave/crest/wavelength services/despite/product"

但是我得到了

"waiting/wave/crest/wavelengthservices/despite/product"

1 个答案:

答案 0 :(得分:0)

根据您的评论,这是一个不太容易理解的解决方案:

>>> import re
>>> text = 'waiting  wave                 crest       wavelength services  despite   product  '
>>> '/'.join(re.sub(r'(\w)(\s{1})(\w)', r'\1_\3', text).split()).replace('_',' ')
'waiting/wave/crest/wavelength services/despite/product'
>>>

它的作用是,首先用下划线替换两个单词之间的单个空格,然后拆分句子,然后将它们用斜杠分隔,最后用下划线替换下划线。

编辑:引用Raymond Hettinger:“必须有一种更简单的方法” ...

>>> import re
>>> text = 'waiting  wave                 crest       wavelength services  despite   product  '
>>> re.sub(r'\s{2,}', '/', text.strip())
'waiting/wave/crest/wavelength services/despite/product'

对于这最后一个,strip()text的开头和结尾删除尾随空格,re.sub()用斜杠替换每次出现的2个或更多空格。