按字符打印字符串字符,包括控制字符

时间:2016-01-09 12:40:05

标签: python-3.x

编辑 - 我遇到的问题是我试图使用的库,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上。

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)