2

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

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 文档,但找不到任何有用的东西。

4

2 回答 2

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.']
于 2013-04-30T18:29:29.247 回答
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。整数
暂停
quis purus eu lorem lobortis aliquam。Nunc imperdiet orci ac
暂停
justo lacinia fringilla。
暂停
于 2013-04-30T18:29:00.783 回答