2016-09-28 95 views
0

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

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

+2

将您的分隔符更改为'';''(脚本的第一行) – jbndlr

回答

1

你可以用熊猫

做到这一点很容易
import pandas as pd 
A = pd.read_csv('yourfile.csv') 

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

因此'print y'语句访问每个元素i在行中。但是我的意思是,在“对于A.values中的x”之后,你几乎可以做任何事情

+0

*有点过度杀伤,不是吗? – jbndlr

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 
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=';'。第一行是标题,因此被跳过。