在打印之前如何进行单个字符串睡眠?

时间:2013-04-30 18:24:51

标签: python python-3.x python-3.3

我正在开发一款互动小说游戏,到目前为止,我还是会像这样睡觉:

def pn(n): print(n); time.sleep(2)  #print narrative


n1 = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer"
n2 = "quis purus eu lorem lobortis aliquam. Nunc imperdiet orci ac"
n3 = "justo lacinia fringilla."


pn(n1); pn(n2); pn(n3)

我想制作一个单独的字符串:

nX = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
quis purus eu lorem lobortis aliquam. Nunc imperdiet orci ac
justo lacinia fringilla."""

每行睡两秒钟,有没有办法做到这一点?我搜索过Python 3.3文档,找不到任何有用的东西。

2 个答案:

答案 0 :(得分:3)

您需要将文本拆分为要打印的行。如果您在文字中已有换行符,请使用str.splitlines()分割:

for line in nX.splitlines():
    pn(line)

.splitlines()在行分隔符上拆分文本,这可能因平台而异。

否则,您需要找到将文本拆分成句子的点。使用正则表达式可以获得最大的收益:

import re

sentence_end = re.compile(r'(?<=[.?!])\s+')

for sentence in sentence_end.split(nX):
   pn(sentence)

这使用了一个后面的断言,以确保文本在句子标点符号前面的空格上分割(.?!)。

分裂句子否则会忽略换行符:

>>> import re
>>> sentence_end = re.compile(r'(?<=[.?!])\s+')
>>> sentence_end.split(nX)
['Lorem ipsum dolor sit amet, consectetur adipiscing elit.', 'Integer\nquis purus eu lorem lobortis aliquam.', 'Nunc imperdiet orci ac\njusto lacinia fringilla.']

答案 1 :(得分:2)

只需将您的字符串转换为多个字符串,迭代它们并在每次迭代中添加一些延迟。

>>> nX = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
... quis purus eu lorem lobortis aliquam. Nunc imperdiet orci ac
... justo lacinia fringilla."""
>>> nX.splitlines()
['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer', 'quis purus eu lorem lobortis aliquam. Nunc imperdiet orci ac', 'justo lacinia fringilla.']
>>> for line in nX.splitlines():
...     print(line)
...     time.sleep(2)
... 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
pause
quis purus eu lorem lobortis aliquam. Nunc imperdiet orci ac
pause
justo lacinia fringilla.
pause