【问题标题】:How to use a FOR loop to split a sentence onto new lines Python3如何使用 FOR 循环将句子拆分为新行 Python3
【发布时间】:2017-11-20 02:09:33
【问题描述】:

我知道如何使用 split() 但是,我在这里有点失忆。我想使用一个 FOR 循环,只要出现空格,它就会拆分用户输入的句子。因此,当我运行程序时,每个单词都应该显示在单独的行上。每次我运行它时,我只是将每个字母放在一个新行上,但我希望每个单词都放在一个新行上。到目前为止我的代码:

string = "My name is Graham"
length = len(string)
for index in range(length):
    if string[index] == " ":
        print(" ")
    else:
        print(string[index])

【问题讨论】:

  • 您目前没有在任何地方使用拆分。另请注意,Python for 循环是 for each:您可以将当前代码替换为 for char in string: print(char)
  • 是的,我故意不使用 split 因为我想在 shell 的新行上打印它。我知道如何使用拆分。
  • 我不清楚你为什么不只是使用它,然后:for word in string.split(): print(word)。你为什么要特殊情况下的空间?
  • 我是个白痴。谢谢!大脑冻结了。

标签: python python-3.x for-loop slice


【解决方案1】:

有几种方法可以做到这一点......

listSplitted = [x for x in string.split(' ')]
for x in listSplitted:
    print(x)

您也可以尝试自己实现 split 方法(这更接近您给出的示例):

lastIdx=0
for idx in range(length):
    if string[idx] == ' ':
        print(string[lastIdx:idx-1])
        lastIdx = idx+1

但你也可以调整 print 方法来做你想做的事:

for idx in range(length):
    if string[idx] == ' ':
        print("") # this appends a new line
    else:
        print(string[idx], end='')

最后一种情况,另请参考https://docs.python.org/3/library/functions.html?highlight=print#print

(我没有在python中测试过代码,所以可能有+-1的索引偏移,你很容易找到)

【讨论】:

    【解决方案2】:

    您可以使用列表理解和.join() 在一行中完成此操作:

    print('\n'.join([x for x in string.split()]))
    

    如果你想保持间距并打印它们,你可以使用:

    print('\n \n'.join([x for x in string.split()]))
    

    您也可以使用for-loop,如下所示:

    for word in string.split():
        print(word)
        print(' ')
    

    如果您不想要空格,请删除第二个打印。

    【讨论】:

    • 我喜欢最后一个解决方案,但如果没有第二次打印,它可以更短。相反,您可以输入: print(word, end = ' ')
    • @Nenad 但是有人提到每个单词都应该打印在一个新行中,包括空格=)
    • 我明白了。然后你可以这样写: for word in string.split(): print(' ' + word, end = '\n')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    相关资源
    最近更新 更多