我有一个字符串,我想减少该字符串之间的连续字符,因为我将来仍想将其转换回列表,但是我失去了一些单词之间的所有空格
我是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"
答案 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个或更多空格。