【问题标题】:Removing whitespace from a list in python [duplicate]从python中的列表中删除空格[重复]
【发布时间】:2013-03-31 07:30:28
【问题描述】:

我目前正在用 python 制作一个密码程序,但我似乎无法解决这个问题:

word = ['a', 'b', 'c']
-----enciphering process-------
message = ['d', 'e', 'f']

print message[x],

我想要发生的事情:

'def'

实际发生的情况:

'd e f'

我知道为什么会有空格,但我似乎无法摆脱它们,我尝试过使用 strip、replace、re.sub、message(映射我不记得的任何内容)和 "" 。加入。这些都适用于预先确定的列表,但当我不知道该列表将是什么时则不行。

请帮忙。

*编辑

我的意思是这样的:

Word = raw_input("Enter a word  ")
Message = list(word)

w = raw_input("Enter a number  ")
w = int(w)
n = len(message)

Letters = ['a', 'b', 'c', 'd' and so on until z]

For y in range(0,n):

   For index in range(0,26):

      X = index + w

      If x > 25:
         x = x - 26

      If message[y] == letters[index]:
         print letters[x],

不知道如何去掉空格,因为我不知道消息是什么

【问题讨论】:

  • 我们能看看你到底尝试了什么吗?我觉得所有这些都是不错的选择。

标签: python list spaces


【解决方案1】:

print message[x], 打印字符message[x],然后是一个空格(从技术上讲,一个“虚拟”空间被下一个print 语句变成一个空格)。如果你循环调用它,你会得到d e f

改为print ''.join(message)

【讨论】:

  • sys.stdout.write() 是另一种选择。在这里可能不会有什么不同,但如果 len(message) 很大,这种方法可能会加快处理时间。
【解决方案2】:

很难说什么不适合你。下面是它在交互式 python 中的样子:

>>> message = ['d', 'e', 'f']
>>> print message
['d', 'e', 'f']
>>> print "".join(message)
def
>>> import sys
>>> sys.stdout.writelines(message)
def>>> 

>>> 开头的行是语句,其他行是输出。最后一行是def,没有换行符,然后是>>> 输入提示。

【讨论】:

    【解决方案3】:

    快速回答是

    import sys
    # ...
    sys.stdout.write(letters[x]) 
    

    但是你的代码结构有问题

    您想对消息进行编码 您应该将您的编码功能应用于该消息 例如

    word="Hello"
    encoded=''.join(map(lambda i: chr(ord(i) ^ 13), word))
    print encoded
    

    【讨论】:

    • 我会尝试您的所有建议,但我不知道 map 的作用,lambda 或 sys.stdout 的作用。不过谢谢大家的帮助。
    • sys.stdout 是系统标准输出(它是一个可以直接写入的文件对象)。 lambda 简而言之是一个匿名函数(在一行中内联定义,只返回一个值)在元素上映射循环并将它们传递给传递的函数(在我们的例子中是 lambda)
    猜你喜欢
    • 2011-03-15
    • 1970-01-01
    • 2021-02-12
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 2017-03-05
    相关资源
    最近更新 更多