2016-09-28 6 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']] 

、出力は[0] [0] pririty返す必要があります メートルのようになります

+2

区切り文字を ''; ''に変更してください(スクリプトの1行目) – 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にアクセスしますn行。しかし、私が意味するのは、 "for x in avalues"の後に何でもできることです。

+0

*少し残念ですね? – jbndlr

0

あなたの質問に対する正確な解決策です。ここで

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

それを行う方法は次のとおりです:明示的にそうのようなヘッダを抽出することが多いいいです、簡単なデータの取り扱いについては

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

>>> priority 

あなたはほとんどそれが正しい( delimiter値に注意してください)です
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=';'を使用してください。また、最初の行はヘッダーであるためスキップされます。

関連する問題