这是我目前的代码:
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())
它给出了包含空格在内的所有字符的列表。有没有得到这个结果并让它等于一个变量?
答案 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']