以表格格式漂亮地打印列表

2023-11-30

使用 Python 2.4,如何以漂亮的表格格式打印列表?

我的列表采用以下格式。

mylist=[(('VAL1', 'VAL2', 'VAL3', 'VAL4', 'VAL5', 'VAL6'), AGGREGATE_VALUE)]

我努力了pprint,但它不会以表格格式打印结果。

EDIT :我希望看到以下格式的输出:


VAL1        VAL2     VAL3    VAL4    VAL5    VAL6        AGGREGATE_VALUE


该表应考虑可变的项目长度,并且仍然以适当的缩进打印。


mylist = [ ( ('12', '47', '4', '574862', '58', '7856'), 'AGGREGATE_VALUE1'),
           ( ('2', '75', '757', '8233', '838', '47775272785'), 'AGGREG2'),
           ( ('4144', '78', '78965', '778', '78578', '2'), 'AGGREGATE_VALUE3')]

longg = dict.fromkeys((0,1,2,3,4,5,6),0)

for tu,x in mylist:
    for i,el in enumerate(tu):
        longg[i] = max(longg[i],len(str(el)))
    longg[6] = max(longg[6],len(str(x)))

fofo = '  '.join('%'+str(longg[i])+'s' for i in xrange(0,7))
print '\n'.join(fofo % (a,b,c,d,e,f,g) for (a,b,c,d,e,f),g in mylist)

result

  12  47      4  574862     58         7856  AGGREGATE_VALUE1
   2  75    757    8233    838  47775272785           AGGREG2
4144  78  78965     778  78578            2  AGGREGATE_VALUE3

不知道这是否满足您的需求

EDIT 1

使用带模运算符 (%) 的字符串格式以恒定长度打印,'%6s'以常数长度 6 右对齐,并且'%-6s'以恒定长度 6 左对齐。

你会发现精确度here

但是指定一个常量长度来在字符串末尾打印某些内容是没有意义的,因为在这种情况下它有点自然左对齐。 然后 :

longg = dict.fromkeys((0,1,2,3,4,5,),0)

for tu,x in mylist:
    for i,el in enumerate(tu):
        longg[i] = max(longg[i],len(str(el)))

fofo = '  '.join('%'+str(longg[i])+'s' for i in xrange(0,6)) + '  %s'
print '\n'.join(fofo % (a,b,c,d,e,f,g) for (a,b,c,d,e,f),g in mylist)

EDIT 2

mylist = [ ( (12, 47, 4, 574862, 58, 7856), 'AGGREGATE_VALUE1'),
           ( (2, 75, 757, 8233, 838, 47775272785), 'AGGREG2'),
           ( (4144, 78, 78965, 778, 78578, 2), 'AGGREGATE_VALUE3')]

longg = dict.fromkeys((0,1,2,3,4,5),0)

for tu,_ in mylist:
    longg.update(( i, max(longg[i],len(str(el))) ) for i,el in enumerate(tu))

fofo = '  '.join('%%%ss' % longg[i] for i in xrange(0,6)) + '  %s'
print '\n'.join(fofo % (a,b,c,d,e,f,g) for (a,b,c,d,e,f),g in mylist)

EDIT 3

mylist = [ ( (12, 47, 4, 574862, 58, 7856), 'AGGREGATE_VALUE1'),
           ( (2, 75, 757, 8233, 838, 47775272785), 'AGGREG2'),
           ( (4144, 78, 78965, 778, 78578, 2), 'AGGREGATE_VALUE3')]

header = ('Price1','Price2','reference','XYD','code','resp','AGGREG values')

longg = dict(zip((0,1,2,3,4,5,6),(len(str(x)) for x in header)))

for tu,x in mylist:
    longg.update(( i, max(longg[i],len(str(el))) ) for i,el in enumerate(tu))
    longg[6] = max(longg[6],len(str(x)))
fofo = ' | '.join('%%-%ss' % longg[i] for i in xrange(0,7))

print '\n'.join((fofo % header,
                 '-|-'.join( longg[i]*'-' for i in xrange(7)),
                 '\n'.join(fofo % (a,b,c,d,e,f,g) for (a,b,c,d,e,f),g in mylist)))

result

Price1 | Price2 | reference | XYD    | code  | resp        | AGGREG values   
-------|--------|-----------|--------|-------|-------------|-----------------
12     | 47     | 4         | 574862 | 58    | 7856        | AGGREGATE_VALUE1
2      | 75     | 757       | 8233   | 838   | 47775272785 | AGGREG2         
4144   | 78     | 78965     | 778    | 78578 | 2           | AGGREGATE_VALUE3

请注意,使用字符串的方法进行这种格式化会容易得多format()Python 2.6 中引入

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以表格格式漂亮地打印列表 的相关文章

随机推荐

  • Android 共享首选项值的最大大小是多少?

    我完全理解将大量数据转储到首选项中是完全不合适的 但我的要求不是那么好 但足够大 可能 500 5000 字节 我不知道它是否合适 这些文档没有帮助 http developer android com reference android
  • 使用字符串常量通知属性已更改

    我正在使用一些现有代码 并试图找出在实现 INotifyPropertyChanged 接口时使用字符串常量作为属性名称的优点 如果有的话 例如这样做 Why use this instead of string literal in On
  • Android Studio:另一个 AAR 库中的 AAR 库依赖项

    我使用的是Android Studio 1 5 我有一个图书馆项目 核心语音服务 aar 此 AAR 文件已正确生成 所有类均在 AAR 文件的classes jar 内构建并打包 现在我正在创建另一个 AAR 库谷歌语音服务 aar这取决
  • 解析属性键中包含特殊字符的 JSON 对象

    我有一个看起来像这样的 JSON 文件 samlp Response attributes xmlns samlp urn oasis names tc SAML 2 0 protocol ID 482d7b9c 3e50 47cb aa6
  • 正则表达式回顾格式条件

    我需要帮助来制作可以匹配特定格式的正则表达式 Input FR 2 699 FR 599 3 FR 899 4 FR 3 899 5 FR 1 499 6 fr 999 Output 599899999 我努力了 1 9 d 2 但输出是
  • 在 corrplot() 中报告显着性水平

    我目前正在使用corrplot 来自corrplotR 中的包 我偶然发现了两个问题 为简单起见 我将使用与 corrplot 的帮助 介绍页面相同的符号 我想在所有单元格中记下我的 p 值或测试的显着性 或两者 而不仅仅是不显着的单元格
  • 嗯,这是新的。无法从智能手机上传照片?

    因此 我正在创建一个响应式网站 可以选择将图像上传到页面 php 脚本基本上调整图像大小并将缩略图文件路径存储在数据库中 原始图像和缩略图也存储在网站文件夹中 我正在使用 GD 库 不管怎样 我只是在测试从我的 iPhone 上传照片到网站
  • 如何捕获QWebEngineUrlRequestInterceptor拦截的请求的响应?

    我有一个带有 QWebEngineUrlRequestInterceptor 的 PyQt5 QWebEngineProfile 该拦截器使我可以在请求解析之前访问该请求 是否可以捕获每个被拦截的请求的响应 而无需手动重新提交请求 clas
  • 如何按值对 ConcurrentHashMap 进行排序?

    ConcurrentHashMap
  • 为什么 C# 中不允许使用 const 参数?

    对于 C 开发人员来说 这看起来很奇怪 在 C 中 我们通常将参数标记为const以确保其状态不会在方法中改变 还有其他 C 特定原因 例如通过const ref为了传递 ref 并确保状态不会改变 但是为什么我们不能在 C 中将方法参数标
  • 如何获取TextInput的String中的当前行数?

    输入文字后TextInput我想知道当前的行数TextInput 或者 目前数量strings也是可以的 我试过了string split n length 但是这段代码没有检测到当文本大于屏幕时该行自动递增 如何获取行数 当我在中添加此功
  • 如何使用 PowerShell 获取类提供的验证参数类

    我只想获取 IValidateSetValuesGenerator 类提供的验证参数 类似于我们使用错误参数时的返回 请参阅示例命令 Sample Verb BadVerb 下面是代码示例 class verb System Managem
  • Chrome 扩展内联安装过程

    UPDATE Google 已禁用 Chrome 扩展程序的内联安装功能 我已在我的 html 页面 我的网站被用户点击 上添加了上述代码 该代码与已在 chrome 商店和 javascript 函数中发布的 chrome 扩展相关联ch
  • 以编程方式清除 Android 地图历史记录

    我想以编程方式清除 Android 地图 和导航 应用程序的历史记录 我知道有一种方法可以清除浏览器历史记录 Browser clearSearches getContentResolver 以及相应的权限 com android brow
  • Mingw 64 下使用 wxWidgets 3.0.2 库时出现问题

    以下是我编译 wxWidgets 库的方法 下载https sourceforge net projects wxwindows files 3 0 2 wxMSW Setup 3 0 2 exe set path MINGW bin cd
  • Spring重启后没有将tomcat持久会话恢复到会话注册表?

    我正在使用 Tomcat 6 2 和 Spring MVC 2 5 我注意到 当用户登录时 我可以重新启动 Tomcat 并且用户可以继续浏览而无需重新进行身份验证 这似乎来自 Tomcat 在重新启动后保持会话的能力 然而 这些持久会话似
  • 我可以在发送电子邮件之前检查收件人是否有自动回复吗?

    我设置了一个宏 可以自动向数十名经理发送电子邮件 有时他们不在 我必须检查离开消息并手动将其转发给替补他们的人 在寻求帮助之前我会尝试找到解决方案 所以请怜悯我 我发现类似的问题但这并没有太多帮助 我找不到很多有关从草稿中的收件人提取自动回
  • Awk 的 FNR==NR 在 Ruby 中的等价物是什么?

    awk 有内置变量FNR and NR从当前文件读取的记录数 通常是行数 和总数 在 awk 中 常见的是 awk FNR NR first file lines next process remaining lines f1 f2 通常
  • Google 开发者控制台数据存储区出现内部错误

    我大部分时间仍然使用旧版开发控制台 因为每当我尝试使用较新的控制台时 在尝试查看数据存储实体或查看查询部分时 它总是给出 内部错误 我希望新的 更丰富多彩的开发控制台最终能解决这个问题 但它给出了相同的内部错误 我唯一没有收到错误的是查看数
  • 以表格格式漂亮地打印列表

    使用 Python 2 4 如何以漂亮的表格格式打印列表 我的列表采用以下格式 mylist VAL1 VAL2 VAL3 VAL4 VAL5 VAL6 AGGREGATE VALUE 我努力了pprint 但它不会以表格格式打印结果 ED