【问题标题】:How to transpose a list without Pandas如何在没有 Pandas 的情况下转置列表
【发布时间】:2021-11-09 08:52:12
【问题描述】:
list = ['AAA\ta\n', 'BBB\tb\n', 'CCC\tc\n', 'DDD\td\n', 'EEE\te\n', 'FFF\tf']

输出:

AAA   a
BBB   b
CCC   c
DDD   d
EEE   e
FFF   f

我想在没有 Pandas 的情况下转置这个列表。像, 期望的输出:

AAA   BBB   CCC   DDD   EEE   FFF
 a     b     c     d     e     f

【问题讨论】:

  • 如何以及在哪里输出列表?

标签: python list tabs transpose word


【解决方案1】:

您应该首先剥离 \n 的字符串并使用 \t 拆分它们。
一旦你有你打印你的行:

input_list = ['AAA\ta\n', 'BBB\tb\n', 'CCC\tc\n', 'DDD\td\n', 'EEE\te\n', 'FFF\tf']

new_list = list(map(lambda x: x.strip().split("\t"), input_list))
nb_row = len(new_list[0])
for i in range(nb_row):
    print("\t".join([x[i].rjust((max(len(y) for y in x) + len(x[i]))//2) for x in new_list]))

rjust 根据同一列中最长的文本将“单元格”的文本居中。
这是一个有趣的练习,但是一旦其中一个文本超过 \t 的长度,您的输出就会变得混乱(对于此类任务更喜欢 pandas):

AAA     BBB     CCC     DDD     EEE     FFF
 a       b       c       d       e       f

编辑:如果您想获得与输入相同格式的输出:

output = ["\t".join([x[i].rjust((max(len(y) for y in x) + len(x[i]))//2) for x in new_list]) + "\n" for i in range(nb_row)]

这给出了:

['AAA\tBBB\tCCC\tDDD\tEEE\tFFF\n', ' a\t b\t c\t d\t e\t f\n']

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 2017-11-17
    • 1970-01-01
    • 2021-02-16
    • 2021-01-11
    • 1970-01-01
    • 2019-03-01
    • 2017-04-06
    • 1970-01-01
    相关资源
    最近更新 更多