在CPython控制台中打印时不要将制表符转换为空格

acruukt9  于 2022-12-17  发布在  Python
关注(0)|答案(1)|浏览(145)
问题

该声明

print(".\t.")

返回CPython控制台中的字符串. .(制表符替换为7个空格),如何保留制表符?
将所有输出从控制台复制到notepad++会显示以下输出(空格变为可见):

问题可能与底层控制台软件而不是Python有关(参见下面的“我的研究”)

设置

我正在Windows 10企业版上使用Anaconda 3.9。
出现此问题的原因是

  • 我从命令提示符cmd运行Python
  • 我从powershell运行Python
  • 我从powershell运行IPython
  • 我从VSCode运行Python脚本(我猜它使用的是Powershell)
  • 我运行的Python 2解释器不是由Anaconda管理的

(The上面的列表只包含了测试过的案例,我还没有找到一个可以使用它的例子。)

用例

我想打印一个制表符分隔的列表,该列表可以复制并粘贴到其他将制表符分隔的列表分配给单个单元格的软件(如Excel)中的表中。

我的研究

这个问题似乎比Python更严重一些,Windows上的默认控制台(cmd和Powershell)可能无法显示制表符,一些线程建议这样做:

在提供的答案中,标签只能转换为空格。我想知道这个问题是否可以通过使用不同的控制台/ UI来规避。
我还发现了几个与特定IDE或控制台相关的类似问题(参见eidogg. herehere)。然而,该问题要么尚未解决,要么解决方案仅适用于特定软件。

hyrbngr7

hyrbngr71#

这取决于你想打印什么样的数据结构。如果你有表格结构,我一般建议使用pandas来处理你的数据。
使用pandas可以创建DataFrame,如果要创建tsv文件,可以使用DataFrame.to_csv(sep='\t')执行此操作
如果你想漂亮地打印表格结构,你可以使用tabulate库,这在你的情况下可能会很有用,注意这不是对你最初问题的回答,而是创建这样一个输出的建议。
否则,我只能说打印\t会根据您使用的控制台产生不同的结果,因为它并不总是直接转换为4个空格。

相关问题