如何在列表中包含空格作为字符

时间:2014-02-22 00:21:49

标签: python

这是我目前的代码:

key = input("Enter the key: ")
sent = input("Enter a sentence: ")
print()# for turnin
print()

print("With a key of:",key)
print("Original sentence:",sent)
print()

#split = sent.split()
blank = [ ]
for word in sent:
    for ch in word:
        blank = blank + ch.split()
print(blank)
print()

我现在拥有的内容列出了我的句子中的所有字母,但没有空格。如果我用这个......

for word in sent:
    for ch in word:
        print(ch.split())

它给出了包含空格在内的所有字符的列表。有没有得到这个结果并让它等于一个变量?

5 个答案:

答案 0 :(得分:3)

如果您只想要句子中所有字符的列表,请使用

chars = list(sent)

你所做的绝对不是你认为的那样。

for word in sent:

这不会循环。这会循环遍历角色。这样:

for word in sent.split()

会循环翻译。

    for ch in word:

由于word已经是一个字符,因此它会循环一个字符。如果不是因为字符被表示为长度为1的字符串,则会产生某种错误。

答案 1 :(得分:3)

sent的类型为字符串。当你以这种方式迭代字符串时:

for word in sent:

你得到的是个别角色,而不是单词。

然后迭代一个char:

    for ch in word:

并获得相同的字符(!)。

然后通过split()调用,您将非空字符转换为将'x'列为自身为元素(['x'])的列表,并将空白字符转换为空列表。

您可能需要以下内容:

for word in sent.split():
    ....

但是,如果你想要的是建立一个单词列表,而不需要迭代,这正是sent.split()将为你提供的!

如果你想要的是一个字符列表,请list(sent)

来自help(str.split)

  

split(...)

     

S.split(sep=None, maxsplit=-1) -> list of strings

     

返回S中单词的列表,使用sep作为       分隔符字符串。如果给出maxsplit,最多是maxsplit       分裂完成。如果未指定sep或者为None,则为any       空白字符串是一个分隔符,空字符串是       从结果中删除。

答案 2 :(得分:2)

如果您想要字符串的单个字符,请将其传递给list

>>> list('This is a string.')
['T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 's', 't', 'r', 'i', 'n', 'g', '.']

答案 3 :(得分:1)

我不是100%肯定你在问什么,但似乎......

blank = [ch for ch in sent]

......这就是你所需要的......

让我给你一些示例Ins and Outs,看看这是不是你想要的。

IN = "Hello world!"
OUT =>
['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!']

是吗?

答案 4 :(得分:0)

string = "This here is a string"

>>> x = list(string) # I think list() is what you are looking for... It's not clear
>>> print x
['T', 'h', 'i', 's', ' ', 'h', 'e', 'r', 'e', ' ', 'i', 's', ' ', 'a', ' ', 's', 't', 'r', 'i', 'n', 'g']

>>> print string.split() # default arg is a space
['This', 'here', 'is', 'a', 'string']