Python 如何在一行上一次打印一个单词?

Python 如何在一行上一次打印一个单词?,python,time,sys,Python,Time,Sys,我想写一段代码,让我把一个单词打印出来,然后它消失,下一个单词打印出来。例如,如果我有“Hello World!”,程序应该打印“Hello”,然后单词消失,然后打印“World!”然后消失。我应该能够改变印刷字的速度以及。目前,我能够想出如何以一定的速度打印字符,但如何一个一个地打印单词呢 import time import sys def print_char(s): for c in s: sys.stdout.write( '%s' % c )

我想写一段代码,让我把一个单词打印出来,然后它消失,下一个单词打印出来。例如,如果我有“Hello World!”,程序应该打印“Hello”,然后单词消失,然后打印“World!”然后消失。我应该能够改变印刷字的速度以及。目前,我能够想出如何以一定的速度打印字符,但如何一个一个地打印单词呢

import time
import sys

def print_char(s):
    for c in s:
        sys.stdout.write( '%s' % c )
        sys.stdout.flush()
        time.sleep(0.1)

print_char("hello world")

如果
words
是字符串列表:

def print_char(words):
    for s in words:
        for c in s:
            sys.stdout.write('%s' %c)
            sys.stdout.flush()
            time.sleep(0.1)
        # erase the word
        sys.stdout.write('\b'*len(s))  # backspace the cursor
        sys.stdout.write(' '*len(s))  # overwrite with spaces
        sys.stdout.write('\b'*len(s))  # backspace again, to write the next word
试试这个:

#!/usr/bin/env python3

import sys
import time

data = "this is a sentence with some words".split()

max_len=max([len(w) for w in data])
pad = " "*max_len
for w in data:
    sys.stdout.write('%s\r' % pad)
    sys.stdout.write("%s\r" % w)
    sys.stdout.flush()
    time.sleep(0.4)

print
举个例子,只是为了好玩


根据对这个问题的回答:

您可以这样做:

import time
import sys

CURSER_UP_ONE = '\x1b[1A'
ERASE_LINE = '\x1b[2K'

def delay_print(sentence, pause_between_words):
    for s in sentence.split(" "):
        sys.stdout.write( '%s' % s)
        sys.stdout.flush()
        time.sleep(pause_between_words)
        print(ERASE_LINE + CURSER_UP_ONE)

delay_print("Hello World!", 0.5)
此代码将在我的终端中一次打印一个字,删除最后一个字并打印下一个字。最后一个字将在终止前删除。这就是你想要的工作方式吗?否则请告诉我

编辑:注意到您还希望在每个字符打印之间有一个延迟。我已经相应地更新了我的代码


编辑:根据你的评论,我逐字符打印删除了字符。

这可能不是你想要的,也可能没有其他答案快,但你可以做的是:

import time, os

text = "This is a long sentence that has a lot of words in it.".split()

for i in range(len(text)):
    os.system("clear")
    print(text[i])
    time.sleep(0.5)
    os.system("clear")

其中text是您要键入的文本,time.sleep(XXX)是显示的单词之间的时间。

如何使用
sys.stdout.write(“%s\r”%s)
,在此之前使用witespace是word中字符串的最大长度?当我运行此代码时,它会在所有字符之间添加一个空格。它不是删除前面的单词。至少有一种方法可以让我一个一个地打印单词吗?我刚刚在python3.3上测试了这个方法,它可以根据您的OP中的描述工作。您是想将每个单词打印在单独的一行中,还是想删除每个单词并用下一行覆盖它?另外,您使用的是哪一版本的python?我想删除这个单词并用下一个单词替换它。我正在使用Python3。3@edboysega321:那么该代码应该可以工作。它适用于我的py3.3。我通过Python shell运行这段代码,但我没有得到与gif文件相同的结果。哪个Python版本?哪一个操作系统(在gif中,我使用sleep 0.4只是为了清楚地区分单词)python 3.3.2我使用python 3.3.0(在linux上)对windows 8进行了测试,它可以正常工作。已将代码更新为我的确切版本(在gif中使用)。希望有帮助…我正在使用Python3.3.2 shell,但仍然遇到同样的问题,我想打印出一个单词,然后该单词被删除,下一个单词被打印。我不想一个接一个地打印字符,我已经相应地更新了代码以反映这一点。现在看起来怎么样?