Python 如何将特定正则表达式应用于特定行

Python 如何将特定正则表达式应用于特定行,python,regex,Python,Regex,我试图在特定行上应用特定的正则表达式,该行由起始键指定: 现在,我将文件的内容放在python变量my_config中 如何对我的配置中的整个文件内容应用正则表达式替换,以替换特定对应行的值,而不必逐行循环,我可以用正则表达式执行此操作吗? 给定 改变 path_jamjs: C:/Users/[changeUsername]/AppData/Roaming/npm/node_modules/jamjs/bin/jam.js path_php: C:/[changeUsername]/php

我试图在特定行上应用特定的正则表达式,该行由起始键指定: 现在,我将文件的内容放在python变量my_config中



如何对我的配置中的整个文件内容应用正则表达式替换,以替换特定对应行的值,而不必逐行循环,我可以用正则表达式执行此操作吗?

给定

改变

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


在跳转到正则表达式/字符串替换之前,这是什么格式的配置文件?
[path]
看起来像可以使用ConfigParser的
ini
格式。但是,您有
冒号,这使它更像YAML。如果您负责编写配置文件,请选择一个。
.ini
.yaml
。我会亲自和亚姆一起去。但取决于您的偏好。是的,这是ConfigParser的.ini,我没有偏好,任何正确的都可以@user391986:可能就是您要找的。我不记得
.ini
是否允许您使用
而不是
=
。但一般来说,您可以从ConfigParser读取ini文件。是的,Schorsch建议的。但是,如果您有一个特定的字符串要替换,您可以在读取configparser后通过搜索轻松替换该字符串,因为您可以按节访问、访问密钥(例如path_jamjs)并处理该值。它是一个ini文件。让他解决这个问题,他只需要使用ConfigParser。不需要read()和splitlines。否则的话,它是橡木虽然+1CppLearner,我的问题是我正在使用ConfigParser,但是ConfigParser有包含变量的路径。所以我有另一个文件,它是用户特定的变量,在ConfigParser读取它之前被替换到.ini中,这就是我寻找上述解决方案的原因!现在就开始测试惊人的,非常感谢,我所做的唯一区别是使用iteritems()而不是items(),因为我的json文件来自json.loadF J。最后一件事是,一旦我有了结果字符串,我需要在config=ConfigParser.ConfigParser()然后是config.readfp(StringIO.StringIO().write(result))中输入它是这样吗?但我似乎无法访问我的选项
with open ("my.ini", "r") as myfile:
  my_config = myfile.read()
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
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)