1. ホーム
  2. python

[解決済み] Python string.replace正規表現 [重複]について

2022-03-19 22:11:06

質問

フォームのパラメータファイルがあります。

parameter-name parameter-value

パラメータはどのような順番でも構いませんが、1行に1つのパラメータしかありません。 あるパラメータの parameter-value を新しい値に変更します。

行置き換え機能を使っています 以前投稿した を使用している行を置き換えるために、Pythonの string.replace(pattern, sub) . 私が使っている正規表現は、例えば vim では動作するのですが、以下の場所では動作しないようです。 string.replace() .

以下は、私が使っている正規表現です。

line.replace("^.*interfaceOpDataFile.*$/i", "interfaceOpDataFile %s" % (fileIn))

ここで "interfaceOpDataFile" は置き換えるパラメータ名(大文字・小文字を区別しない場合は /i)、新しいパラメータ値は fileIn という変数があります。

Pythonにこの正規表現を認識させる方法、または他にこのタスクを達成する方法はありますか?

どのように解決するのですか?

str.replace() <上 v2 | v3 は正規表現を認識しません。

正規表現を使って置換を行うには re.sub() v2 | v3 .

例えば

import re

line = re.sub(
           r"(?i)^.*interfaceOpDataFile.*$", 
           "interfaceOpDataFile %s" % fileIn, 
           line
       )

ループの場合は、最初に正規表現をコンパイルしたほうがよいでしょう。

import re

regex = re.compile(r"^.*interfaceOpDataFile.*$", re.IGNORECASE)
for line in some_file:
    line = regex.sub("interfaceOpDataFile %s" % fileIn, line)
    # do something with the updated line