删除for循环中的空格

时间:2013-08-30 19:44:52

标签: python loops for-loop whitespace

我在python中创建了一个简单的脚本,它使用chr和ord将字母在ASCII表中向上移动了5个空格。见下文:

word = "python"

print 'Shifted 5 letters are: '
for letters in word:    
    print chr(ord(letters)+5),

输出结果为:

Shifted 5 letters is: 
u ~ y m t s

输出很棒,但是如何停止for循环在每个字母之间放置空格?

3 个答案:

答案 0 :(得分:9)

如果您不需要使用for循环,只需执行以下操作:

print ''.join([chr(ord(letter) + 5) for letter in word])

而不是整个循环。

答案 1 :(得分:4)

当您使用“魔术逗号”时,无法阻止Python 2.x的print语句打印空格。

这是Python 3.x的print函数更灵活的部分原因,使用关键字参数而不是魔术语法:

for letters in word:    
    print(chr(ord(letters)+5), end='')

如果您真的想要,可以使用from __future__ import print_function(或使用第三方six库)在Python 2.x中获得相同的行为。

但是,通常情况下,当您遇到问题与print进行斗争以达到您想要的效果时,解决方法是首先格式化您的字符串,然后打印它。所以:

output = ''
for letters in word:
    output += chr(ord(letters)+5)
print output

通常更加pythonic(和更快)建立一个list字符串,并在结尾调用join,而不是重复追加到字符串:

output = []
for letters in word:
    output.append(chr(ord(letters)+5))
print ''.join(output)

你可以通过将循环转换为comprehension而不是语句来使这更简单(甚至更紧固):

print ''.join(chr(ord(letters) + 5) for letters in word)

答案 2 :(得分:1)

我不知道我是否得到了你所要求的100%,但这种解决方法返回了没有任何空格的字母:

def no_space(word) :
new_word = ""
for letter in word :
    new_word += chr(ord(letter) + 5)
return new_word

然后调用函数:

no_space("python")

结果:'u~ymts'