使用列作为文字列表读取csv文件

时间:2017-04-28 17:37:12

标签: python list python-3.x csv

我有一个包含几列的csv文件。其中一列包含带有文字python格式列表的行,我想将它们读入列表列表。

CSV文件

val1 ['foo', 'bar']
val2 ['baz']
val3 ['a','b','c']

到目前为止,我所尝试的是

with open('data.csv') as csv_file:
    csv_read = csv.reader(csv_file)
    values, value_lists = zip(*csv_read)
    value_lists = ast.literal_eval(value_lists)

for val, value_lists in zip(values, value_lists):
    for single_list in value_lists:
        print(f'{val}: {single_list}')

ast.literal_eval()会出现ValueError('malformed node or string: ' + repr(node))错误。

我希望value_lists包含[['foo', 'bar'],['baz'],['a','b','c']]

答案

使用value_lists = map(ast.literal_eval, value_lists)确切地按照我想要的方式工作。谢谢@PhilipTzou

1 个答案:

答案 0 :(得分:0)

我想你可以使用:

file = open('csv_parse.txt'); content = file.readlines(); file.close()
result = []
[result.append(eval(x.split(" ", 1)[1])) for x in content]
print(result)

输出:

[['foo', 'bar'], ['baz'], ['a', 'b', 'c']]