如何在Python中加载一个csv文件,该文件在i中有一个带有数组的列

2024-04-25 08:15:50 发布

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

如何使用python加载其中一列是数组的csv文件。你知道吗

如果我有这样的csv文件

time,account,status,values
0912,srvA,disabled,[['removed', 'admin'], ['added','disabled', '0x9923'], ['filler', 'filler', 'filler']

当我读入csv文件时。列值作为单个字符串读入。而不是数组。你知道吗

我怎样才能读入这个文件以便可以像这样访问值呢。你知道吗

with open(fileName[0], 'r') as reader :
                importReader = csv.reader(reader);
                for line in importReader:
                    if line[0] != "time" and line[1] != "account" and line[2] != "status":
                        print(line[4][0])

应该打印

['removed', 'admin']

Tags: and文件csvadmintimestatuslineaccount
2条回答

CSV文件不支持这样的列表,所以严格地说那可能不是CSV文件。您可以在该行周围放置方括号,并将其作为JSON导入。那可能有用。你知道吗

import json

line = '[' + line + ']'
mylist = json.loads(line)
print(mylist[3][0])

您还需要在值行的末尾添加另一个']'。你知道吗

如果您的“values”列的格式正确地设置为实际列表,并作为字符串读入,则可以使用eval()将其转换为列表:

>>> list_as_string = '[["removed", "admin"], ["added","disabled", "0x9923"], ["filler", "filler", "filler"]]'
>>> type(list_as_string)
<type 'str'>
>>> list_as_list = eval(list_as_string)
>>> type(list_as_list)
<type 'list'>

所以要修正你的例子:

with open(fileName[0], 'r') as reader :
    importReader = csv.reader(reader)
    for line in importReader:
        print(eval(line[4])[0])

将在每个读取行的“values”列中打印求值列表中的第一个子列表

相关问题 更多 >