搜索和替换 - 具有匹配模式的{python

时间:2016-10-25 21:00:00

标签: python

我有一个文件' abc.txt'具有以下格式。

+test1_app1 +o_test = /bin/su - user1  
+test1_app1 +ae_test1d = /bin/su - user2   
+test2_app +e_hd = /bin/su -  user1  
+crd_app +er_sd = /bin/su - user2  
+rod_app +eo_tsd = /bin/su - user1  
+rod_app +eo_tsd = /bin/su - user3  

我喜欢搜索特定用户,然后使用不同格式写入同一文件

对于user1,它应该用下面的方法更改相同的文件abc.txt。请注意我正在从passwd阅读用户列表。

+test1_app1 +o_test = (user1) ALL  
+test1_app1 +ae_test1d = /bin/su - user2   
+test2_app +e_hd = (user1) ALL  
+crd_app +er_sd = /bin/su - user2  
+rod_app +eo_tsd = (user1) ALL  
+rod_app +eo_tsd = /bin/su - user3  

passwd文件包含user1,user2,user3等所有用户

这是我到目前为止所写的:

import fileinput   
s=open('/etc/passwd','r')  
for i in s:  
    if 'user' in i:  
        for line in fileinput.input('/tmp/abc.txt', inplace = 1):  
            print line.replace(i.split(':')[0], "????")

我不认为我可以通过line.replace实现这一点。我可能需要使用re.sub?如何使用re.sub?我相信你可以将它们组合在一起" \ 1"什么?

有人可以帮忙吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

  

我不认为我可以通过line.replace实现这一点。我可能需要使用re.sub?

这部分你错了。您可以使用str.replace()作为:

来实现它
 line = line.replace('/bin/su - user1', '(user1) ALL') 

用于更改user1的格式。如果您有list形式的多个用户。迭代用户列表并执行此操作。

如果您想要替换基于某种格式的内容(例如re.sub()),

user<some_num>会非常有用。但对于单个用户,str.replace()是更好的选择