1

開始キーで指定された特定の行に特定の正規表現を適用しようとしています: 現在、python 変数 my_config 内にファイルの内容があります


file content
---------------------------------------------
[paths]
path_jamjs: C:/Users/[changeUsername]/AppData/Roaming/npm/node_modules/jamjs/bin/jam.js
path_php: C:/[changeUsername]/php/php.exe

values to replace
---------------------------------------------
"path_jamjs": { "changeUsername": "Te" },
"path_php": { "changeUsername": "TeS" },

with open ("my.ini", "r") as myfile:
  my_config = myfile.read()

行ごとにループすることなく、特定の対応する行の値を置き換える my_config にあるファイルコンテンツ全体に正規表現置換を適用するにはどうすればよいですか?正規表現でこれを行うことはできますか?

与えられた

path: path_php
key: changeUsername
value: Te

変化する

path_jamjs: C:/Users/[changeUsername]/AppData/Roaming/npm/node_modules/jamjs/bin/jam.js
path_php: C:/[changeUsername]/php/php.exe

path_jamjs: C:/Users/[changeUsername]/AppData/Roaming/npm/node_modules/jamjs/bin/jam.js
path_php: C:/Te/php/php.exe
4

1 に答える 1

2
with open ("my.ini", "r") as myfile:
    my_config = myfile.read()

lines = my_config.splitlines(True)
replacements = {"path_jamjs": {"changeUsername": "Te"},
                "path_php": {"changeUsername": "TeS"}}

for path, reps in replacements.items():
    for i, line in enumerate(lines):
        if line.startswith(path + ':'):
            for key, value in reps.items():
                line = line.replace('[' + key + ']', value)
            lines[i] = line

result = ''.join(lines)
于 2013-05-09T16:15:09.780 に答える