1

カンマ+スペースに変更するには、スペースが後に続かないコンマを含むテキストに対して検索/置換を実行する必要があります。

だから私はこれを使って見つけることができます:

,[^\s]

しかし、私は交換に苦労しています。私はただ使うことはできません:

 , (space, comma)

または

& ,

一致は元々2文字に一致するため。

'&'-1と言う方法はありますか?または'&[0]'またはそれを意味する何か; 置換引数の「一致した文字列、ただしその一部のみ」?

これを尋ねようとする別の方法:

  1. 正規表現を使用して文字列の一部を識別できますか?
  2. しかし、私の文字列の(わずかに異なりますが、関連している)部分を置き換えます。

おそらくすべてのコンマをコンマ+スペースに置き換えることができますが、これはもう少し制御されており、必要のない変更を加える可能性は低くなります。

例えば:

オリジナル:

Hello,World.

次のようになります。

Hello, World.

だが:

Hello, World

として残る必要があります:

Hello, World.

そして現在、私の(悪い)パターンを使用して私は持っています:

オリジナル:

Hello,World

後(間違っている):

Hello, orld

私は実際にPythonの(2.6)'re'モジュールを使用しています。

4

5 に答える 5

2

弦の一部をキャプチャするために括弧を使用することは、それを行う1つの方法です。もう1つの可能性は、「先読みアサーション」を使用することです。

,(?=\S)

このパターンは、その後に空白以外の文字が続く場合にのみ、コンマと一致します。後にコンマが続くものとは一致しませんが、その情報を使用して、コンマと一致するかどうかを決定します。

例えば:

>>> re.sub(r",(?=\S)", ", ", "Hello,World! Hello, World!")
'Hello, World! Hello, World!'
于 2012-04-19T17:09:39.260 に答える
1

はい、括弧を使用して、式に一致する文字列の一部を「キャプチャ」します。私はPythonの実装に精通していませんが、要素がキャプチャに対応するmatch[]と呼ばれるある種の配列を提供するはずです。

于 2012-04-19T17:03:13.907 に答える
1

はい、できます。しかし、この単純なケースでは、なぜあなたはそうするのでしょうか?

def insertspaceaftercomma(s):
    """inserts a space after every comma, then remove doubled whitespace after comma (if any)"""
    return s.replace(",",", ").replace(",  ",", ")

動作するようです:

>>> insertspaceaftercomma("Hello, World")
'Hello, World'
>>> insertspaceaftercomma("Hello,World")
'Hello, World'
>>> 
于 2012-04-19T17:09:22.967 に答える
1

カンマとスペース以外の文字を探して、それらの間にスペースを入れることができます。

re.sub(r',([^\s])', r', \1', string) 
于 2012-04-19T17:57:09.073 に答える
1

これを試して:

import re

s1 = 'Hello,World.'
re.sub(r',([^\s])', ', \g<1>', s1)
> Hello, World.

s2 = 'Hello, World.'
re.sub(r',([^\s])', ', \g<1>', s2)
> Hello, World.
于 2012-04-19T19:10:49.493 に答える