2016-09-28 71 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=';'。第一行是標題,因此被跳過。