簡體   English   中英

如何在打印單個字符串的行之前使其休眠?

[英]How can I do lines of a single string sleep before being printed?

我正在開發一個互動小說游戲,直到現在我都像這樣睡覺:

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文檔,但找不到任何有用的信息。

您需要將文本分成多行進行打印。 如果文本中已經有換行符,請使用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.']

只需將您的字符串轉換成許多字符串,對其進行迭代,並在每次迭代中增加一些延遲。

>>> 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

quis purus eu lorem lobortis aliquam. Nunc imperdiet orci ac

justo lacinia fringilla.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM