次の形式のパラメータ ファイルがあります:
parameter-name parameter-value
parameter-value
パラメータは任意の順序で指定できますが、1 行に指定できるパラメータは 1 つだけです。1 つのパラメータを新しい値に置き換えたいです。
行置換機能を使用しています以前に投稿Pythonのstring.replace(pattern, sub)
私が使用している正規表現は、たとえば vim では機能しますが、 では機能しないようですstring.replace()
。
私が使用している正規表現は次のとおりです。
line.replace("^.*interfaceOpDataFile.*$/i", "interfaceOpDataFile %s" % (fileIn))
"interfaceOpDataFile"
置換するパラメータ名 (大文字と小文字を区別しない場合は /i) と、新しいパラメータ値が変数の内容になりますfileIn
。
Python にこの正規表現を認識させる方法はありますか? あるいは、このタスクを実行する別の方法はありますか?
ベストアンサー1
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