0

大量のテキスト(変数全体にある)で「he」という単語を検索しようとしています。これは「she」に置き換えられます。次に、テキストをもう一度検索して「she」を彼に置き換えます。ただし、以下の通常の表現は互いに上書きしています。つまり、この例では、テキストはすべて「彼」になります。

私の質問-正規表現を組み合わせて両方の操作を一度に実行する方法はありますか?

#jackNew.heShe() == she
#jillNew.heShe() == he  

whole=re.sub(r'(?i)\bhe\b', jackNew.heShe(), whole)

whole=re.sub(r'(?i)\bshe\b', jillNew.heShe(), whole)

助けてくれて本当にありがとうございます。

4

2 に答える 2

1

という事実を利用することができますre.sub(pattern, repl, string, count=0, flags=0)

が関数の場合repl、重複しないパターンの出現ごとに呼び出されます。この関数は単一の一致オブジェクト引数を取り、置換文字列を返します。

import re
s = 'she said he was a nice girl'
re.sub('s?he', lambda m: 'he' if m.group() == 'she' else 'she', s)

与える

'he said she was a nice girl'
于 2012-12-08T21:53:11.007 に答える
0

まあ、これは一度に行くわけではありませんが、オプションは別のルートを取ることです. 次のような中間置換を使用できます。

  • "he"と置き換えます"s@he"
  • "she"と置き換えます"he"
  • "s@he"と置き換えます"she"

これで問題が解決します。

于 2012-12-08T21:47:02.063 に答える