0

私は次のようなcsvを持っています:

"Equipment","LNKEQP","METAST","METSER","MODSTA","METEOD"
"HLL_POS_00098",1,1,0,0,0
"TOY_GAT_00003",0,0,0,3,0
"NAT_POS_00010",0,3,0,3,0
"NAT_GAT_00002",0,0,0,0,0
"NAT_GAT_00001",0,0,0,4,0
A machine A is unavailable

そして、私はそのcsvファイルを次のように読み取るためのコードを使用します:

reader = csv.DictReader(f)
s=[]
for row in reader:

ただし、行には「マシンAは使用できません」、この行を取得して次の例として出力する方法は含まれていません。

'METEOD': '0', 'MODSTA': '0', 'METSER': '0', 'LNKEQP': '0', 'METAST': '0', 'Equipmnt': 'NAT_VCF_00001'
'METEOD': '0', 'MODSTA': '0', 'METSER': '0', 'LNKEQP': '1', 'METAST': '1', 'Equipment': 'NAT_TVM_00002'
A machine A is unavailable

お手伝いありがとうございます

4

1 に答える 1

4

解析する前に、問題のある行を削除します。

import csv
from StringIO import StringIO

i = """"Equipment","LNKEQP","METAST","METSER","MODSTA","METEOD"
"HLL_POS_00098",1,1,0,0,0
"TOY_GAT_00003",0,0,0,3,0
"NAT_POS_00010",0,3,0,3,0
"NAT_GAT_00002",0,0,0,0,0
"NAT_GAT_00001",0,0,0,4,0
A machine A is unavailable
"""

# Take only those lines that contain a comma.
j = "".join([line for line in StringIO(i).readlines() if ',' in line])

# Parse the taken lines as CSV.
reader = csv.reader(StringIO(j))
for line in reader:
    print line

出力:

['Equipment', 'LNKEQP', 'METAST', 'METSER', 'MODSTA', 'METEOD']
['HLL_POS_00098', '1', '1', '0', '0', '0']
['TOY_GAT_00003', '0', '0', '0', '3', '0']
['NAT_POS_00010', '0', '3', '0', '3', '0']
['NAT_GAT_00002', '0', '0', '0', '0', '0']
['NAT_GAT_00001', '0', '0', '0', '4', '0']
于 2012-11-12T10:48:36.123 に答える