首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >格式化表格ascii python

格式化表格ascii python
EN

Stack Overflow用户
提问于 2019-09-01 05:02:50
回答 1查看 29关注 0票数 2

您好,我试图在第二列之后添加一个空格,而不是将它添加到第一列,但是如果我试图以一种肮脏的方式添加它,比如'| '.join,我的单元格就会变得一团糟,但是我怎么能有输出的愿望呢?我也尝试过rjust(3),但它不起作用

代码语言:javascript
运行
复制
_id = ['1', '2', '3','4']
transport = ['http','tcp','https','dns']
agent = ['10.10.1.1','10.10.1.2','10.10.1.3','10.10.1.4']
username = ['DESKTOP-123\\user','root','user','user']
os = ['windows/amd64','linux/amd64','windows/amd64','linux/amd64']
seen = ['2019-08-31 13:10:08','2019-08-31 13:10:08','2019-08-31 13:10:08','2019-08-31 13:10:08']
titles = ['ID', 'Transport', 'Agent', 'Username','Operating System','Last Seen']
data = [titles] + list(zip(_id, transport, agent, username,os,seen))

def os():
    print("\t")
    for i, d in enumerate(data):
        line = '|'.join(str(x).ljust(18) for x in d)
        print(line)
        if i == 0:
            sep = '-' * 18 + '+'
            line = ''.join(sep for x in d)
            print(line)
    print("\t")

我想要有一个输出,在管道后面添加一个空格,第一列除外

代码语言:javascript
运行
复制
|1 | 2 | 3 |
+--+---+---+
|4 | 5 | 6 |
|7 | 8 | 9 |
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-01 05:54:07

将枚举数据中的第一行定义替换为:

代码语言:javascript
运行
复制
line = f'{str(d[0]).ljust(18)}| {"| ".join(str(x).ljust(17) for x in d if d.index(x) > 0)}'

它应该是这样的:

代码语言:javascript
运行
复制
_id = ['1', '2', '3','4']
transport = ['http','tcp','https','dns']
agent = ['10.10.1.1','10.10.1.2','10.10.1.3','10.10.1.4']
username = ['DESKTOP-123\\user','root','user','user']
os = ['windows/amd64','linux/amd64','windows/amd64','linux/amd64']
seen = ['2019-08-31 13:10:08','2019-08-31 13:10:08','2019-08-31 13:10:08','2019-08-31 13:10:08']
titles = ['ID', 'Transport', 'Agent', 'Username','Operating System','Last Seen']
data = [titles] + list(zip(_id, transport, agent, username,os,seen))

def os():
    print("\t")
    for i, d in enumerate(data):
        line = f'{str(d[0]).ljust(18)}| {"| ".join(str(x).ljust(17) for x in d if d.index(x) > 0)}'
        print(line)
        if i == 0:
            sep = '-' * 18 + '+'
            line = ''.join(sep for x in d)
            print(line)
    print("\t")

结果:

代码语言:javascript
运行
复制
ID                | Transport        | Agent            | Username         | Operating System | Last Seen        
------------------+------------------+------------------+------------------+------------------+------------------+
1                 | http             | 10.10.1.1        | DESKTOP-123\user | windows/amd64    | 2019-08-31 13:10:08
2                 | tcp              | 10.10.1.2        | root             | linux/amd64      | 2019-08-31 13:10:08
3                 | https            | 10.10.1.3        | user             | windows/amd64    | 2019-08-31 13:10:08
4                 | dns              | 10.10.1.4        | user             | linux/amd64      | 2019-08-31 13:10:08
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57741573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档