Python 打印时替换字典中的值
我有一个python字典,示例配置如下:Python 打印时替换字典中的值,python,Python,我有一个python字典,示例配置如下: { "user_name": "abc" "password": "xyz" } 我想打印这本词典,但在打印时我想屏蔽其中的密码字段。 Print语句应返回如下内容: { "user_name": "abc" "password": "*****" } 有没有办法在python中实现它?如果您想修改有关词典的print函数的行为,您应该创建自己的词典类,继承自默认的Pythondict,然后定义自己的\uuu repr\uuu函数。我认为您只想打印字
{
"user_name": "abc"
"password": "xyz"
}
我想打印这本词典,但在打印时我想屏蔽其中的密码字段。
Print语句应返回如下内容:
{
"user_name": "abc"
"password": "*****"
}
有没有办法在python中实现它?如果您想修改有关词典的
print
函数的行为,您应该创建自己的词典类,继承自默认的Pythondict
,然后定义自己的\uuu repr\uuu
函数。我认为您只想打印字典中的项目,而不是像其他人建议的那样自定义字典类。这样做应该:
import copy
d2 = copy.deepcopy(d)
d2['password'] = '***'
print(d2)
def get_masked_str(mydict):
result = "{\n"
for k, v in mydict.items():
if k == "password":
v = "*****"
result += " " + repr(k) + ": " + repr(v) + "\n"
result += "}\n"
return result
这里有一个不使用外部模块的简单函数,它将密码字段替换为
*
def secure_str(d):
x={}
x.update(d)
x['password']=len(x["password"])*"*"
return x
当然,字典或密码字符串的自定义类。重写
\uuuu str\uuuu()
以影响对象的打印方式。您可以查看str(mydict)
是否有必要这样做,或者是否可以接受其他函数进行打印?为什么要以纯文本形式存储密码?即使在以纯文本形式存储时立即覆盖表示,也有办法访问它。