Python在Jupyter Notebooks中无法使用换行符\n

6

我想要在Jupyter Notebook中清晰地显示postgreSQL表的元组,但是换行符\n在这里不起作用(在我的python脚本中,在jupyter之外使用相同的代码可以正常工作)。

我尝试运行:

cur.execute('SELECT * FROM Cars')
'\n '.join(str(x) for x in cur.fetchall())

但是我的输出仍然包含了 '\n' 字符本身:
"(1, 'Toyota', 'Supra', 2020, 'Sport', 'Gas', 49995.0, 7, 280.0, datetime.date(2020, 5, 27), 'Loan', 50150.0, 300.0, 987654321, 333356789)\n (4, 'Chevrolet', 'Corvette', 2020, 'Sport', 'Gas', 55999.0, 4, 280.0, datetime.date(2020, 5, 27), 'Loan', 58999.0, 300.0, 987444321, 333356789)\n (2, 'Toyota', '4Runner', 2018, 'Sport', 'Gas', 40599.0, 13266, 280.0, datetime.date(2020, 5, 27), 'Loan', 58999.0, 300.0, 987334321, 333356789)"

有什么想法或需要我做些什么或添加什么吗?


3
你是将结果字符串打印出来,还是仅仅返回它?在控制台或Jupyter Notebooks上返回的字符串始终保留其\n字符,而不是可视化添加换行符。 - jfaccioni
谢谢,我刚意识到需要打印它才能发生这种情况。我只是返回它,我猜原始字符串会因此被显示出来。另一方面,print()会处理这些转义字符。 - javaluv21
2个回答

13

当你没有将输出放在打印语句中时,在Jupyter笔记本和Python Shell中,"\n"将被打印为"\n"而不是换行符。

输入: 'A\nB'

输出: 'A\nB'

输入: print('A\nB')

输出:

A
B

您需要的解决方案是: print('\n '.join(str(x) for x in cur.fetchall()))

0
对我而言,我正在将我的.ipynb文件导出为.pdf,因为我在一个print行中打印了所有我的知识,所以在PDF版本中被截断了。
最简单的解决方案是使用三引号
# instead of
print("You're Strong, But I Could Snap My Fingers And\nYou'd All Cease To Exist.")

# use
print("""
You're Strong, But I Could Snap My Fingers And 
You'd All Cease To Exist.
"""

[Output]
Youre Strong, But I Could Snap My Fingers And
You'd All Cease To Exist.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接