CSV将行拆分为列表

时间:2016-09-28 12:08:33

标签: python list csv

所以我想将列表中的字符串拆分成多个列表 像行[1]应该被拆分成列表m中包含的另一个列表 我在这里看到了它,并且可以访问m [0] [0]以获得第一个项目形式的第一个列表。     import csv

reader = csv.reader(open("alerts.csv"), delimiter=',')
)
rows=[]
for row in reader:
    rows.append(row)

num_lists=int(len(rows))
lists=[]


m=[]

for x in rows:
    m.append(x.split(';')[0])

打印行:

[['priority;status;time;object_class;host;app;inc;tool;msg'], ['P2;CLOSED;24-09-2016 20:06:41;nm;prod;;390949;HPNNM;call'], ['P2;CLOSED;24-09-2016 20:06:41;nm;prod;;390949;HPNNM;msg'], ['P2;CLOSED;24-09-2016 20:06:41;nm;prod;;390949;HPNNM;msg']]

和输出应该是这样的 m [0] [0]应返回pririty

3 个答案:

答案 0 :(得分:1)

你可以用pandas轻松地做到这一点

import pandas as pd
A = pd.read_csv('yourfile.csv')

for x in A.values:
    for y in x:
        print y

所以'print y'语句访问行中的每个元素。但我的意思是,在“for value in A.values”中你可以做任何事情

答案 1 :(得分:0)

您问题的准确解决方案;你几乎把它弄好了(注意delimiter值):

reader = csv.reader(open("alerts.csv"), delimiter=';')
table = [row for row in reader]
print(table[0][0])

>>> priority

为了便于数据处理,通常很好地显式提取标题,如下所示:

reader = csv.reader(open("alerts.csv"), delimiter=';')
header = reader.next()
table = [row for row in reader]
print(header[0])
print(table[0][0])

>>> priority
>>> P2

答案 2 :(得分:0)

以下是如何操作:

import csv

with open('alerts.csv') as f:
    reader = csv.reader(f, delimiter=';')
    next(reader)    # skip over the first header row
    rows = [row for row in reader]

>>> print(rows[0][0])
P2

这使用列表推导将CSV文件中的所有行读入列表。分隔符应该是分号,而不是逗号;所以使用delimiter=';'。第一行也是标题,因此被跳过。