前提
以下のような情報が書かれたファイルがあります.test.txtとファイル名の.
8
each points
A 2.226730 -2.297519 10.865253
A 3.134080 2.730629 9.816493
A 1.342130 -3.204289 11.437873
A 3.117650 -4.051999 9.385453
A 3.216930 4.354489 7.967793
A 3.250250 1.652309 8.849343
A 3.345290 -1.941729 7.493003
A 3.328380 -3.322829 7.042513
1行目が個数,2行目がメモ,3行目以下がアルファベットのA +3つの数字となっています.
これの数字の部分に条件を課して,それを満たす行だけを新しいファイルに書き出すといったことを行いたいです.
実現したいこと
使う情報には,アルファベットのA+a,b,cの数字があり
このa,b,cの数値が
0.1<=a,b,c<10.1
であればそのまま残し,
もし1つでも満たしてなければその行は全部消したいです.なのでこの場合は
3
each points
A 3.134080 2.730629 9.816493
A 3.216930 4.354489 7.967793
A 3.250250 1.652309 8.849343
となり新しいファイルに記入したいです.
分割まではできましたがその後が分かりません.
該当のソースコード
python3
1import sys, re, os.path ,math 2 3def catfile(s): 4 s = s.strip() 5 s = re.sub(" *"," ",s) 6 s = re.split(" ",s) 7 return s 8 9def readdata(ff): 10 data = [] 11 num = catfile(ff.readline()) 12 num = int(num[0]) 13 memo = ff.readline() 14 for i in range(num): 15 line = ff.readline() 16 line = catfile(line) 17 alpha = line[0] 18 a = float(line[1]) 19 b = float(line[2]) 20 c = float(line[3]) 21 data += [(alpha,(a,b,c))] 22 print(data) 23 return data 24 25 26if __name__ == '__main__': 27 28 file_name = "/test.txt" 29 with open(file_name,"r") as ff: 30 data_points = readdata(ff)
この際の結果
[('A', (2.22673, -2.297519, 10.865253)), ('A', (3.13408, 2.730629, 9.816493)), ('A', (1.34213, -3.204289, 11.437873)), ('A', (3.11765, -4.051999, 9.385453)), ('A', (3.21693, 4.354489, 7.967793)), ('A', (3.25025, 1.652309, 8.849343)), ('A', (3.34529, -1.941729, 7.493003)), ('A', (3.32838, -3.322829, 7.042513))]
回答1件
あなたの回答
tips
プレビュー