繁体   English   中英

当Python在for循环中打印时,如何删除空格?

[英]How do I remove the spaces when Python prints in for loop?

我是Python的新手。 尝试制作一个简单的函数,通过dict值将字符串输入转换为盲文(“ 1”表示凹凸,0表示无凹凸)。

我敢肯定有更快/更好的方法来做到这一点,但是我所拥有的几乎可以正常工作(另一种说法完全无效)。

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()。

对于我认为是pythonic的方式:

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

(这假定所有plaintext alphabet均使用alphabet

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

在函数的第一行中,创建一个容器l=[]将循环内的最后一条语句更改为l.append(value) 。在循环外但仍在函数内,请return ''.join(l) 现在应该工作。

您可以在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

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

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

将打印如下:

foo
bar

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

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

它将像这样打印:

foobar

希望这是解决此类问题的有用方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM