2017-03-20 36 views
0

我是Python新手。试图做一个简单的函数,通过字典值将字符串输入转换成盲文('1'表示凹凸和0无凹凸)。Python打印for循环时如何删除空格?

我敢肯定,有更快/更好的方法来做到这一点,但我所拥有的几乎工作(另一种说法是根本不起作用的方式)。

alphabet = { 
'a': '100000','b': '110000','c': '100100','d': '100110' 
#etc 
} 
def answer(plaintext): 

    for i in str(plaintext): 
     for key, value in alphabet.iteritems(): 
      if i in key: 
       print value,    

answer('Kiwi') 

此打印:

000001101000 010100 010111 010100 

我的问题是我怎么删除空间?我需要它打印为:

000001101000010100010111010100 

它打印为元组,因此我不能使用.strip()。

+1

http://stackoverflow.com/questions/255147/how-do-i-keep-python-print-from-adding-newlines-or-spaces – user1952500

+0

可能的重复[如何保持Python打印不添加换行符或空格?](http://stackoverflow.com/questions/255147/how-do-i-keep-python-print-from-adding-newlines-or-spaces) – Cecilia

回答

1

为了什么我会考虑一个Python的方式:

def answer(plaintext): 
    alphabet = { ... } 
    return "".join([alphabet[c] for c in plaintext]) 

(假定在plaintext所有的字母都在alphabet

+0

非常感谢!这工作完美。我明白通过每个c以明文形式循环,并且字典值没有空格地加入,但是你能简要地解释其余的工作 - 特别是字母表[c]吗? – Stu

+0

''alphabet''是一个字典,所以'alphabet' [c]'是我明白的明文 – marisbest2

+0

中该字母的编码。再次感谢。 – Stu

0
brail = [] 
for i in str(...): 
    if alphabet.get(i): 
    brail.append(alphabet[i]) 
print ''.join(brail) 
0

在函数的第一行,创建一个容器l=[] .Change环路内最后一条语句来l.append(value) .Outside的循环,但仍然在函数内部,做return ''.join(l)。现在应该工作。

+0

谢谢。这工作完美。 – Stu

0

您可以在generator内使用join()像这样:

alphabet = {'a': '100000','b': '110000','c': '100100','d': '100110'} 

def answer(a = ''): 
    for i in a: 
     for key, value in alphabet.iteritems(): 
      if i in key: 
       yield value 

print ''.join(answer('abdaac')) 

输出:

>>> 100000110000100110100000100000100100 
0

在Python中操作打印的一种方法是使用结束参数。默认情况下它是一个换行符。

print("foo") 
print("bar") 

将打印这样的:

foo 
bar 

为了使这两个报表打印在同一行,我们可以这样做:

print("foo",end='') 
print("bar",end='') 

这将打印这样的:

foobar 

Hopeful这是解决诸如此类问题的有效方法。