都市と数字の間のスペースをコンマに置き換えたいのですが、思いついた行 (およびそのバリエーション) は文字列を消し去っているようです。
>>> temp = re.sub(r"(\w+).*?(\d+)", ",", string)
どこstring
に似ています:
Toronto 239495
Cape Town 34567
これどうやってするの?
私はまだ正規表現を取り上げているので、コードの説明は本当に素晴らしいでしょう。
正しい一致を置き換えていますが、コンマのみを使用しています。試合の他の部分も置き換えられます。アサーションを使用することも、単にそれらを元に戻すこともできます。
temp = re.sub(r"(\w+).*?(\d+)", r"\1,\2", string)
ただし、\w+
はでのみ一致Cape
しCape Town
ます。どうですか:
temp = re.sub(r"(.+?)\s*(\d+)", r"\1,\2", string)
先読みと先読みを使用できます:
In [1]: s = 'Toronto 239495 Cape Town 34567'
In [2]: re.sub(r"(?<=\w)\s(?=\d+)", ",", s)
Out[2]: 'Toronto,239495 Cape Town,34567'
これを試して:
In [1]: string = "Toronto 239495 Cape Town 34567"
In [2]: re.sub(r"(\w)\s+(\d)", r"\1,\2", string)
Out [2]: 'Toronto,239495 Cape Town,34567'
この場合、都市の名前全体と一致する理由はありません。これは、文字の後に少なくとも1つのスペースが続き、その後に数字が続く場合に一致します。次に、スペースを1つのコンマに置き換えます。