Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 打印时替换字典中的值_Python - Fatal编程技术网

Python 打印时替换字典中的值

Python 打印时替换字典中的值,python,Python,我有一个python字典,示例配置如下: { "user_name": "abc" "password": "xyz" } 我想打印这本词典,但在打印时我想屏蔽其中的密码字段。 Print语句应返回如下内容: { "user_name": "abc" "password": "*****" } 有没有办法在python中实现它?如果您想修改有关词典的print函数的行为,您应该创建自己的词典类,继承自默认的Pythondict,然后定义自己的\uuu repr\uuu函数。我认为您只想打印字

我有一个python字典,示例配置如下:

{
"user_name": "abc"
"password": "xyz"
}
我想打印这本词典,但在打印时我想屏蔽其中的密码字段。 Print语句应返回如下内容:

{
"user_name": "abc"
"password": "*****"
}

有没有办法在python中实现它?

如果您想修改有关词典的
print
函数的行为,您应该创建自己的词典类,继承自默认的Python
dict
,然后定义自己的
\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)
是否有必要这样做,或者是否可以接受其他函数进行打印?为什么要以纯文本形式存储密码?即使在以纯文本形式存储时立即覆盖表示,也有办法访问它。