数据转换Python

2024-09-30 20:33:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下格式的数据(在csv文件中):

a b c
b
a
a c d
b c
b c

我想将以上数据转换为以下格式(列表):

^{pr2}$

到目前为止,我已经做到了:

import csv

fileName = "toydataset.csv"

data = open(fileName, 'r')
reader = csv.reader(data)
allRows = [row for row in reader]
allRows

但是,输出如下:

[['a', 'b', 'c'],
 ['b', '', ''],
 ['a', '', ''],
 ['a', 'c', 'd'],
 ['b', 'c', ''],
 ['b', 'c', '']]

如何从列表中删除这些空值,使输出看起来像这样?在

^{pr2}$

Tags: 文件csv数据import列表fordata格式
3条回答

您也可以在不使用任何内置方法的情况下执行此操作:

>>> l
[['a', 'b', 'c'], ['b', '', ''], ['a', '', ''], ['a', 'c', 'd'], ['b', 'c', ''], ['b', 'c', '']]
>>> [[i for i in j if i] for j in l]
    [['a', 'b', 'c'], ['b'], ['a'], ['a', 'c', 'd'], ['b', 'c'], ['b', 'c']]
In [8]: l
Out[8]: 
[['a', 'b', 'c'],
 ['b', '', ''],
 ['a', '', ''],
 ['a', 'c', 'd'],
 ['b', 'c', ''],
 ['b', 'c', '']]

In [9]: [ filter(None, a) for a in l]
Out[9]: [['a', 'b', 'c'], ['b'], ['a'], ['a', 'c', 'd'], ['b', 'c'], ['b', 'c']]

还有一个选择。如果你想干那种事。在

import csv


def clean_item(item):
    res = [x for x in item if x]
    return res


def main():
    # PEP-8!
    file_name = "toydataset.csv"
    with open(file_name, 'r') as data: # don't corrupt your data!
        reader = csv.reader(data)
        # PEP-8!
        all_rows = [row for row in reader if row]
        print(all_rows)


if __name__ == '__main__':
    main()

相关问题 更多 >