[英]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.