Jupyter Lab中print(flush=True)输出异常问题求助
Jupyter Lab 4.3.4 中print输出换行异常的解决方法
问题重现
给定字符串列表:
string = ['I',"'m using",'.\n\nI should',' explain',' that']
执行以下代码:
for c in string: print(c, end = '',flush = True)
得到异常输出:
I'm using. explain that
正确预期输出应为:
I'm using. I should explain that
解决方法
方法1:先拼接字符串再一次性打印
将所有片段拼接成完整字符串后打印,避免分段输出导致的渲染问题:
string = ['I',"'m using",'.\n\nI should',' explain',' that'] print(''.join(string))
方法2:使用sys.stdout直接写入
绕过print函数的额外处理,直接向标准输出写入内容:
import sys string = ['I',"'m using",'.\n\nI should',' explain',' that'] for c in string: sys.stdout.write(c) sys.stdout.flush()
原因说明
Jupyter Lab 4.3.4对print(..., end='', flush=True)的分段输出存在渲染兼容问题,每次print的内容会被作为独立片段处理,导致换行符和空格的排版异常。而上述两种方法能让输出作为一个整体被渲染,从而得到正确结果。
内容的提问来源于stack exchange,提问作者enbo zhang
相关产品推荐
相关产品推荐

