データのフォーマットやらなんやらで、読み込めないデータが混ざっている時、その部分だけをNoneで欠損させて読み込ませたい。
データの区切りが空白" "を場合を想定すると、
f= open( filename, "r" ) lines = f.read().split("\n") f.close() for line in lines: if not line: continue if "\r" in line: l = line.strip("\r").split(" ") else: l = line.split(" ") while "" in l: l.remove("") data = [] try: data.append( map( float, l ) ) except: ll = [] for li in l: try: ll.append( float( li ) ) except: ll.append( None ) data.append( ll )
最初からmapを使わずに全部のデータを1個ずつfloat出来るかチェックするやり方もあると思うが、何となく泥臭くて嫌だなぁと。
mapで一行丸ごと実数化を試みた後に、上手く行かなかった成分を調べる方が人間に思考に近い気がする。