如何从输出中删除空格但保留python中的字典值?

时间:2015-03-22 21:42:30

标签: python dictionary

我必须删除输出中的空格和换行符,但需要空格是字典中的值。

代码:

dict = {'a': '1', 'b': '2', 'c': '3', 'd': ' '}
strg = 'abcd'
for i in strg:
    if i in dict:
       print (dict.get(i,)),

我得到以下输出:

1 2 3 space

我想要的是:

123space

2 个答案:

答案 0 :(得分:4)

除了建议join而不是使用循环的其他答案,您可以使用str.translate来获取所需的输出:

>>> 'abcd'.translate(str.maketrans({'a': '1', 'b': '2', 'c': '3', 'd': ' '}))
'123 '

如果您在python 2中,则可以执行以下操作:

>>> 'abcd'.translate(string.maketrans('abcd','123 '))
'123 '

或者您可以从dict:

中提取用于创建表格的输入和输出
>>> d={'a': '1', 'b': '2', 'c': '3', 'd': ' '}
>>> inp=''.join(d.keys())
>>> out=''.join(d.values())
>>> 'abcd'.translate(string.maketrans(inp,out))
'123 '

答案 1 :(得分:3)

只需将dict.getstr.join的空字符串的默认值一起使用:

d = {'a': '1', 'b': '2', 'c': '3', 'd': ' '}
strg = 'abcd'
print("".join(d.get(i,"") for i in strg))

如果您使用repr,您可以看到空格:

print(repr("".join(d.get(i,"") for i in strg)))
'123 '

另外,请避免将dict用作变量名称,或dict(foo="bar")之类的内容不会按照您的想法执行。