python - 如何在没有 Pandas 的情况下转置列表
问题描述
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
解决方案
你应该首先剥离你的字符串\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
根据同一列中最长的文本将“单元格”的文本居中。
这是一个有趣的练习,但是一旦其中一个文本超过 a 的长度,您的输出就会变得混乱\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']
推荐阅读
- php - 在 ElasticSearch 中将新元素推送/添加到嵌套对象数组中的最佳方法是什么?
- office-js - “抱歉,我们无法加载加载项”Office Word 加载项
- c++ - 同时写入多个文件
- reactjs - 无法获取内容
- excel - 升级到 O365 后如何发送邮件?
- r - brms add_criterion 如何管理大型 brmsfit 模型
- ruby - 403 Forbidden : 您无权访问此资源
- kotlin - 如何在 Gradle 构建脚本 (Kotlin) 中自定义子项目中的 WAR 插件
- c# - 如何使用 selenium WebDriver 更改转换属性
- c++ - 如何在现代 GNU/Linux 发行版上运行旧的二进制文件?