我正在寻找一个用于打印这样的表的Python库:
=======================
| column 1 | column 2 |
=======================
| value1 | value2 |
| value3 | value4 |
=======================
Run Code Online (Sandbox Code Playgroud)
我找到了asciitable,但它不做边框等.我不需要任何复杂的数据项格式,它们只是字符串.我确实需要它来自动调整列数.
这样的事情存在,还是我需要花几分钟时间写自己的?
使用python2.7,我正在尝试打印到屏幕表格数据.
这大致是我的代码:
for i in mylist:
print "{}\t|{}\t|".format (i, f(i))
Run Code Online (Sandbox Code Playgroud)
问题是,根据长度i或f(i)数据不会对齐.
这就是我得到的:
|foo |bar |
|foobo |foobar |
Run Code Online (Sandbox Code Playgroud)
我想得到什么:
|foo |bar |
|foobo |foobar |
Run Code Online (Sandbox Code Playgroud)
有没有允许这样做的模块?
我有以下格式保存的数据(数字)(示例):
234 127 34 23 45567
23 12 4 4 45
23456 2 1 444 567
...
Run Code Online (Sandbox Code Playgroud)
是否有任何python方法来排列数字并将它们作为
234 127 34 23 45567
23 12 4 4 45
23456 2 1 444 567
Run Code Online (Sandbox Code Playgroud)
(我无法预测列大小).
我有一个循环收集的数据,并存储在只包含相同数据类型的单独列表中(例如,只包含字符串,只有浮点数),如下所示:
names = ['bar', 'chocolate', 'chips']
weights = [0.05, 0.1, 0.25]
costs = [2.0, 5.0, 3.0]
unit_costs = [40.0, 50.0, 12.0]
Run Code Online (Sandbox Code Playgroud)
我已将这些列表视为表的"列",并希望将它们打印为格式化的表,应该如下所示:
Names | Weights | Costs | Unit_Costs
----------|---------|-------|------------
bar | 0.05 | 2.0 | 40.0
chocolate | 0.1 | 5.0 | 50.0
chips | 0.25 | 3.0 | 12.0
Run Code Online (Sandbox Code Playgroud)
我只知道如何在表行中横向打印列表中的数据,我已经在线查看(以及在此站点上)以获得有关此问题的一些帮助,但是我只是设法找到帮助使它在python 2.7而不是3.5中工作.1这就是我正在使用的.
我的问题是:
如何从上面的4个列表中获取条目以打印到如上所示的表格中.
来自上面列表的每个项目索引是相关联的(即,来自4个列表的条目[0]与相同的项目相关联;条形,0.05,2.0,40.0).
在Python中打印表格数据的最佳方法是什么?假设数据在2D列表中,我想创建一个智能外观的表.我实际拥有的是一个字典列表,我想根据字典中的值打印一个交集.就像是
for val1 in my_dict:
for val2 in my_dict:
if val1['a'] > val2['a']:
print 'x'
Run Code Online (Sandbox Code Playgroud)
但是这样每个列的宽度都是固定的.Writer和格式化程序类似乎是可能性的东西,但与Perl的格式化程序相比,它仍然看起来很复杂.
是否有任何现有的实现或我必须自己编写?
我试图打印几个列表(等长)作为表的列.
我正在从.txt文件中读取数据,在代码的最后,我有5个列表,我想打印为列分隔但空格.
所以我刚开始在学校学习 Python 3,我们必须制作一个函数,将a作为参数,选择一个合理的 x 值,并返回a平方根的估计值。
我们还必须创建一个函数来测试它。我们必须编写一个名为 test_square_root 的函数来打印一个表,其中第一列是一个数字a;第二列是用第一个函数计算的a 的平方根;第三列是 math.sqrt 计算的平方根;第四列是两个估计值之间差异的绝对值。
我写了第一个求平方根的函数,但我不知道如何制作这样的表格。我在这里阅读了有关 Python3 中表格的其他问题,但我仍然不知道如何将它们应用到我的函数中。
def mysqrt(a):
for x in range(1,int(1./2*a)):
while True:
y = (x + a/x) / 2
if y == x:
break
x = y
print(x)
print(mysqrt(16))
Run Code Online (Sandbox Code Playgroud) 我正在研究 Python 包,它们提供了一种简单的方法来将格式化的“漂亮”表格作为文本输出。这个答案提供了一些建议。问题是,我想像记录器一样按顺序打印我的表(一次一行)。
为了说明这一点, tabulate的输出非常适合我的应用程序:
from tabulate import tabulate
some_data = [['08:01', 1.00, 32], ['08:02', 1.01, 33], ['08:03', 1.02, 33]]
headers = ['Time', 'x', 'n']
print(tabulate(some_data, headers=headers, tablefmt='plain'))
Run Code Online (Sandbox Code Playgroud)
输出:
Time x n
08:01 1 32
08:02 1.01 33
08:03 1.02 33
Run Code Online (Sandbox Code Playgroud)
但我想一次执行一个操作,而不是一次性执行所有操作: 1. 打印标题 2. 打印第一行数据 3. 打印下一行 4. ...等等。
当然,我尝试过这个:
print(tabulate(some_data[0:1], tablefmt='plain'))
Run Code Online (Sandbox Code Playgroud)
输出:
08:01 1 32
Run Code Online (Sandbox Code Playgroud)
这显然不会完美地工作,因为每行的格式每次都会不同。所以我需要一个包,您可以先在其中设置表格(指定所需的格式、列宽等)。然后一次一行输出数据。
有谁知道这是否可以在这些包之一或我可以导入的另一个包中实现?
好吧,我之前阅读了所有这些,我认为大熊猫可能是一个解决方案,但我的问题略有不同:
垂直
打印列表列表打印列表作为表格数据
打印字典值在python列表中
打印到字典表
我有一份清单:
dict={"A":[i1, i2,i3], "B":[i1, i4,i5], "C":[i1, i2,i5]}
Run Code Online (Sandbox Code Playgroud)
我想要的输出是:
i1 i2 i3 i4 i5
A x x x - -
B x - - x x
C x x - - x
Run Code Online (Sandbox Code Playgroud)
(甚至更好,
i1 i2 i3 i4 i5
A A A A - -
B B - - B B
C C C - - C
Run Code Online (Sandbox Code Playgroud)
或者在另一个字典中匹配A,B,C或(A,in)的值,但如果我只能拥有第一个表,我会非常高兴)
没有列表包含重复,但这些列表中的每个元素都是从同一个列表中提取的(实际上我的问题是使用相应的蛋白质制作带注释的术语网格,键是带注释的术语,在我的上下文中是与这些蛋白质相关的函数研究).
我确实可以想到一种复杂的方法(构建0和1的向量,用于将每个列表与一般列表进行比较,将这些向量与键相关联,将其放入一个pandas DataFrame中,该格式将由我重新建立每个列表中的大量实体,然后打印出来),但这看起来很乏味/单调.
我认为必须有一个已知的方法来做一些模块(熊猫,漂亮,其他?); 我只是不知道.所以我很高兴有任何见解.谢谢
为了打印表格数据的标题,我想仅使用一种格式字符串line和一种列宽规格w1, w2, w3(或者即使w = x, y, z可能的话)。
我已经看过这个,但是tabulate等等,不要让我像那样证明专栏中的内容是合理format的。
这种方法有效:
head = 'eggs', 'bacon', 'spam'
w1, w2, w3 = 8, 7, 10 # column widths
line = ' {:{ul}>{w1}} {:{ul}>{w2}} {:{ul}>{w3}}'
under = 3 * '='
print line.format(*head, ul='', w1=w1, w2=w2, w3=w3)
print line.format(*under, ul='=', w1=w1, w2=w2, w3=w3)
Run Code Online (Sandbox Code Playgroud)
我必须在格式字符串中使用单独的名称作为 width {w1}, , ... 吗?{w2}尝试给出{w[1]}, {w[2]},KeyError或keyword can't be an expression。 …
我有这个列表清单:
tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
Run Code Online (Sandbox Code Playgroud)
我必须转换成这个表:
apples Alice dogs
oranges Bob cats
cherries Carol moose
banana David goose
Run Code Online (Sandbox Code Playgroud)
对我来说,诀窍是将"线"转换成列(即苹果,橙子,樱桃,同一列下的香蕉)
我尝试过不同的选择(A):
for row in tableData:
output = [row[0].ljust(20)]
for col in row[1:]:
output.append(col.rjust(10))
print(' '.join(output))
Run Code Online (Sandbox Code Playgroud)
选项(B):
for i in tableData:
print( i[0].ljust(10)+(str(i[1].ljust(15)))+(str(i[2].ljust(15)))+
(str(i[3].ljust(15))))
Run Code Online (Sandbox Code Playgroud)
似乎没有人能解决这个问题.
在此先感谢您的任何建议.
我有一个18x18 2d numpy数组(这是一个混乱矩阵)......我需要/想在ipython笔记本中将它显示为一个表.
当我简单地将其打印出来时,它会显示重叠 - 行很长,它们会占用两行.
是否有一个库允许我以某种电子表格格式打印这个数组?
python ×12
tabular ×3
format ×2
ascii ×1
console ×1
dataframe ×1
dictionary ×1
formatting ×1
grid-layout ×1
list ×1
matplotlib ×1
numpy ×1
output ×1
pandas ×1
pretty-print ×1
python-3.x ×1
string ×1