栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

像列输出一样易于使用-python库

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

像列输出一样易于使用-python库

我认为没有通用的跨平台方式来“获取终端的宽度”- 绝对不是 “查看COLUMNS环境变量”(请参阅​​我对问题的评论)。在Linux和Mac OS
X(我希望所有现代Unix版本)上,

curses.wrapper(lambda _: curses.tigetnum('cols'))

返回列数;但我不知道wcurses是否在Windows中支持此功能。

一旦确定了输出宽度(如果您坚持要使用os.environ
[‘COLUMNS’],或者通过curses,或者是从oracle,或者默认为80,或者您希望的其他方式),那么其余的就很可行了。这是一项艰巨的工作,很可能会出现一种错误,并且很容易受到许多您无法完全弄清楚的详细规格的影响,例如:哪一列被剪掉以避免换行-
它总是最后一个,还是…?当根据您的问题仅传入两列时,您如何在示例输出中显示3列?如果不是所有行都具有相同的列数,应该怎么办?表中的所有条目都必须是字符串吗?以及许多其他类似的谜团。

因此,对您不表达的所有规格进行一些随意的猜测,一种方法可能类似于…:

import sysdef colprint(totwidth, table):  numcols = max(len(row) for row in table)  # ensure all rows have >= numcols columns, maybe empty  padded = [row+numcols*('',) for row in table]  # compute col widths, including separating space (except for last one)  widths = [ 1 + max(len(x) for x in column) for column in zip(*padded)]  widths[-1] -= 1  # drop or truncate columns from the right in order to fit  while sum(widths) > totwidth:    mustlose = sum(widths) - totwidth    if widths[-1] <= mustlose:      del widths[-1]    else:      widths[-1] -= mustlose      break  # and finally, the output phase!  for row in padded:    for w, i in zip(widths, row):      sys.stdout.write('%*s' % (-w, i[:w]))    sys.stdout.write('n')


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624577.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号