【问题标题】:Writing a Python list of lists to a csv file in inverted position [duplicate]将列表的Python列表写入倒置位置的csv文件[重复]
【发布时间】:2017-08-18 16:03:01
【问题描述】:

我有一长串如下形式的列表---

a = [[1.2,'abc',3],[1.2,'werew',4],........,[1.4,'qew',2]]

即列表中的值具有不同的类型——浮点数、整数、字符串。如何将其写入 csv 文件,以便我的输出 csv 文件看起来像

1.2,abc,3
1.2,werew,4
.
.
.
1.4,qew,2

通过这段代码很容易实现:

你可以使用pandas:

In [1]: import pandas as pd

In [2]: a = [[1.2,'abc',3],[1.2,'werew',4],[1.4,'qew',2]]

In [3]: my_df = pd.DataFrame(a)

In [4]: my_df.to_csv('my_csv.csv', index=False, header=False)

但我想要这种格式:

1.2 1.2 . . . 1.4
abc wer . . . qew
3   4   . . . 2

【问题讨论】:

  • 文件中的每一列是否左对齐,右侧用空格填充?每列之间是否有一个空格?您的文件是否只有三行长?您的两个示例结果彼此不同。请进一步解释“此格式”。

标签: python python-3.x csv dataframe file-io


【解决方案1】:

试试这个。只是一个概念证明,但您可以将其包装成您需要的任何内容:

a = [[1.2,'abc',3],[1.2,'werew',4],[1.4,'qew',2]]

# Rotate
rotated = zip(*a)

# Find the longest string of each set
max_lengths = [ max([ len(str(value)) for value in l ]) for l in a ]

# Generate lines
lines = []
for values in rotated:
    items = []
    for i, value in enumerate(values):
        value_str = str(value)
        if len(value_str) < max_lengths[i]:
            # Add appropriate padding to string
            value_str += " " * (max_lengths[i] - len(value_str))
        items.append(value_str)
    lines.append(" ".join(items))

print "\n".join(lines)

哪些输出:

1.2 1.2   1.4
abc werew qew
3   4     2

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2012-05-21
    • 2019-06-22
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    相关资源
    最近更新 更多