【问题标题】:Read csv file with column as literal list以列作为文字列表读取 csv 文件
【发布时间】:2017-09-26 21:49:45
【问题描述】:

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

【问题讨论】:

  • value_lists = map(ast.literal_eval, value_lists).

标签: python list python-3.x csv


【解决方案1】:

我猜你可以使用:

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']]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 2018-12-15
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多