我正在开发一款互动小说游戏,到目前为止,我还是会像这样睡觉:
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文档,找不到任何有用的东西。
答案 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