使用带有fileinput的正则表达式

chr*_*ley 4 python regex

我试图使用正则表达式替换存储在另一个文件中的变量.我试过的代码是:

r = re.compile(r"self\.uid\s*=\s*('\w{12})'")
for line in fileinput.input(['file.py'], inplace=True): 
    print line.replace(r.match(line), sys.argv[1]), 
Run Code Online (Sandbox Code Playgroud)

文件中变量的格式为:

self.uid = '027FC8EBC2D1'
Run Code Online (Sandbox Code Playgroud)

我试图传递这种格式的参数,并使用正则表达式来验证sys.argv[1]格式是否正确,并找到存储在此文件中的变量,并将其替换为新变量.

谁能帮忙.谢谢您的帮助.

msa*_*ers 6

您可以使用re.sub与正则表达式匹配的内容并一次性执行替换:

r = re.compile(r"(self\.uid\s*=\s*)'\w{12}'")
for line in fileinput.input(['file.py'], inplace=True):
    print r.sub(r"\1'%s'" %sys.argv[1],line),
Run Code Online (Sandbox Code Playgroud)