开发者

How to replace just one whitespace with regex in python?

for example:

T h e   t e x t   i s   w h a t   I   w a n t   t o   r e p l a c e

I want the result like this:

The text is what I want to replace

I tried that with shell, sed,

 echo 'T h e   t e x t   i s   W h a t   I  w a n t   r e p l a c e'|sed -r "s/(([a-zA-Z])\s){1}/\2/g"|sed 's/\  / /g'

it's successfully. but I don'开发者_StackOverflowt know how to replace this in python. could anybody help me?


If you just want to convert a string that has whitespace between each chars:

>>> import re
>>> re.sub(r'(.) ', r'\1', 'T h e   t e x t   i s   w h a t   I   w a n t   t o  r e p l a c e')
'The text is what I want to replace'

Or, if you want to remove all single whitespace and replace whitespaces to just one:

>>> re.sub(r'( ?) +', r'\1', 'A B  C   D')
'AB C D'


Just for kicks, here is a non-regex solution using string operations:

>>> text = 'T h e   t e x t   i s   w h a t   I   w a n t   t o   r e p l a c e'
>>> text.replace(' ' * 3, '\0').replace(' ', '').replace('\0', ' ')
'The text is what I want to replace'

(Per the comment, I changed the _ to \0 (null character).)


Just for fun, two more ways to do it. These both assume there is strictly a space after every character that you want.

>>> s = "T h e   t e x t   i s   w h a t   I   w a n t   t o   r e p l a c e "
>>> import re
>>> pat = re.compile(r'(.) ')
>>> ''.join(re.findall(pat, s))
'The text is what I want to replace'

Even easier, using string slicing:

>>> s[::2]
'The text is what I want to replace'
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜