Python正则表达式在字符串中屏蔽键值对

Python正则表达式在字符串中屏蔽键值对,python,regex,key-value,masking,Python,Regex,Key Value,Masking,我有一个字符串,如下所示:- "assdd ffdsfad 'result_secret_key': 'dfkfaj&^%2', 'auth_matrix': '213fsdf#', 'password': 'adsfa&&*!@#4' and 'app_auth': 'eff#@DS' dafsdsaf adfs adlsfjasdkjf " 我需要屏蔽所有包含诸如secret、auth、key和password等单词的密钥 我的意思是说像‘结果、秘密、钥匙’:‘*

我有一个字符串,如下所示:-

"assdd ffdsfad 'result_secret_key': 'dfkfaj&^%2', 'auth_matrix': '213fsdf#', 'password': 'adsfa&&*!@#4' and 'app_auth': 'eff#@DS'  dafsdsaf adfs adlsfjasdkjf "
我需要屏蔽所有包含诸如secret、auth、key和password等单词的密钥

我的意思是说像‘结果、秘密、钥匙’:‘******’

有人能给我推荐一个在Python中实现这一点的正则表达式模式吗

最终字符串应如下所示:-

"assdd ffdsfad 'result_secret_key': '******', 'auth_matrix': '******','password': '******' and 'app_auth': '******'  dafsdsaf adfs adlsfjasdkjf "

使用
re.sub
功能

>>> s = "assdd ffdsfad 'result_secret_key': 'dfkfaj&^%2', 'auth_matrix': '213fsdf#', 'password': 'adsfa&&*!@#4' and 'app_auth': 'eff#@DS'  dafsdsaf adfs adlsfjasdkjf "
>>> re.sub(r"('\S*?(?:secret|auth|key|password)\S*?'\s*:\s*')[^']*(?=')", r'\1******', s)
"assdd ffdsfad 'result_secret_key': '******', 'auth_matrix': '******', 'password': '******' and 'app_auth': '******'  dafsdsaf adfs adlsfjasdkjf "

\S*
匹配零个或多个非空格字符,
(?:secret | auth | key | password)
匹配给定列表中的单个单词。

Avinash Raj的答案可能更好。。。 但还有一个问题:

re.sub(": '.*?'",r": '***'",s)
尝试此操作。替换为
\1****”
。请参阅演示

('[^']*?(?=secret|auth|key|password)[^']*':\s*')[^']*'
import re
p = re.compile(ur'(\'[^\']*?(?=secret|auth|key|password)[^\']*\':\s*\')[^\']*\'')
test_str = u"assdd ffdsfad 'result_secret_key': 'dfkfaj&^%2', 'auth_matrix': '213fsdf#', 'password': 'adsfa&&*!@#4' and 'app_auth': 'eff#@DS' dafsdsaf adfs adlsfjasdkjf "
subst = u"\1****'"

result = re.sub(p, subst, test_str)