Python 如何在csv文件中获取非csv行
我有一个csv,比如: 我使用代码读取csv文件,如下所示:Python 如何在csv文件中获取非csv行,python,csv,python-2.7,Python,Csv,Python 2.7,我有一个csv,比如: 我使用代码读取csv文件,如下所示: reader = csv.DictReader(f) s=[] for row in reader: 但该行不包含“A机器A不可用”,如何获取此行和输出,如下例所示: 'METEOD': '0', 'MODSTA': '0', 'METSER': '0', 'LNKEQP': '0', 'METAST': '0', 'Equipmnt': 'NAT_VCF_00001' 'METEOD': '0', 'MODSTA': '0', '
reader = csv.DictReader(f)
s=[]
for row in reader:
但该行不包含“A机器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
感谢您的帮助请在解析之前删除有问题的行:
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']
在分析错误行之前,请删除它们:
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']
带有非csv行的文件不是csv文件。我知道,但该文件中有一些行,我必须处理它们并像上面的输出一样输出。对这样的文件有什么帮助吗?带有非csv行的文件不是csv文件。我知道,但该文件中有一些行,我必须处理它们并像上面的输出那样输出。对于这样的文件有什么帮助吗?感谢您的解决方案,现在我知道最好将它们分为两组:csv和非csv。感谢您的解决方案,现在我知道最好将它们分为两组:csv和非csv。