编辑 - 我遇到的问题是我试图使用的库,colorama,我可能应该更具体。
我希望能够逐字符地打印一个字符串,并在每个字符之间进行极短的暂停,但我的代码会忽略控制字符,只打印单个字符。不知道如何解决这个问题。
以下是代码的一部分:
import time, sys
def slowprint(message, speed):
for x in range(0, len(message)):
if x == len(message)-1:
print(message[x])
else:
print(message[x], end="")
sys.stdout.flush()
time.sleep(speed)
我在python 3.2上。
答案 0 :(得分:0)
也许是这样的?
import time, sys
def slowprint(message, speed):
i = iter(message)
# output first character before pausing
sys.stdout.write(next(i))
sys.stdout.flush()
for letter in i:
time.sleep(speed)
sys.stdout.write(letter)
sys.stdout.flush()
编辑:修复
答案 1 :(得分:0)
我不完全清楚你的问题,但我会假设你正在尝试打印像'\ t'或'\ n'这样的控制字符。
当你创建一个像“A \ tB”这样的字符串时,它由三个字符而不是四个字符组成。 '\ t'直接转换为单个字符。
因此,当您遍历字符时,您需要将这些控制字符映射回其字符串表示形式。为此,您可以使用repr()
(请参阅this answer)并且您很好
>>> slowprint(repr("abs\tsd\n"), 0.1)