我有一个包含几列的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
答案 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']]