3

例えば:

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

シェル、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'

成功です。しかし、これをpythonで置き換える方法がわかりません。誰でも私を助けることができますか?

4

3 に答える 3

5

各文字間に空白がある文字列を変換したいだけの場合:

>>> 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'

または、単一の空白をすべて削除し、空白を 1 つだけに置き換えたい場合:

>>> re.sub(r'( ?) +', r'\1', 'A B  C   D')
'AB C D'
于 2011-09-16T04:33:32.097 に答える
3

キックのために、文字列操作を使用した正規表現以外のソリューションを次に示します。

>>> 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'

(コメントごとに、_\0(ヌル文字)に変更しました。)

于 2011-09-16T04:40:12.797 に答える
1

楽しみのために、あと 2 つの方法があります。これらは両方とも、必要なすべての文字の後に厳密にスペースがあることを前提としています。

>>> 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'

文字列スライスを使用すると、さらに簡単になります。

>>> s[::2]
'The text is what I want to replace'
于 2011-09-18T02:21:28.177 に答える