import re
server_name = 'blah'
webmaster_email = 'blah@blah.com'
SUBS = ( (r'^#ServerName www.example.com', 'ServerName %s' % server_name),
(r'^ServerAdmin root@localhost', 'ServerAdmin %s' % webmaster_email),
(r'KeepAlive On', 'KeepAlive Off')
)
with open("httpd.conf", "r+") as file:
tmp=[]
for i in file:
for s in SUBS:
ret=re.subn(s[0], s[1], i)
if ret[1]>0:
tmp.append(ret[0])
break
else:
tmp.append(i)
for i in tmp:
print i,
您可以在Python内部使用正则表达式,方法与sed中的方法非常类似。只需使用Python regular expressions library。您可能对re.sub()方法感兴趣,该方法与您的示例中使用的sed的
s
命令相当。在如果您想高效地执行此操作,您可能只需要在每行运行一个替换命令,如果它被更改,则跳过它,类似于您在示例代码中执行此操作的方式。为了达到这个目的,您可以使用
re.subn
,而不是re.sub
或{a3}与匹配的组组合使用。在下面是一个例子:
相关问题 更多 >
编程相关推荐