実現したいこと
sample1.datは以下のようなファイルです。
Num p T
1501 0.7 500
1503 1.4 700
sample2.datは以下のようなファイルです。
Num p T
1504 0.8 550
1506 1.9 850
今、この2つのファイルを読み込んで、p<1でまとめたファイルA-1.csv、1<p<2でまとめたA-2.csvを出力したいと思っています。「該当のソースコード」の、
① 25行目~35行目だけをコメントアウトしたコードの出力
② 13行目~23行目だけをコメントアウトしたコードの出力
は正しいのですが、「該当のソースコード」の出力は
A-1.csvが
['1501' '0.7' '500']
['1501' '0.7' '500']
A-2.csvが
['1503' '1.4' '700']
['1503' '1.4' '700']
となっておかしいので、「該当のソースコード」を直してください。
欲しい出力は
A-1.csvが
['1501' '0.7' '500']
['1504' '0.8' '550']
A-2.csvが
['1503' '1.4' '700']
['1506' '1.9' '850']
です。
また、datファイルの読み込みの部分は書けたには書けたのですが、もっとシンプルに(分かりやすく)書くことができそうな気がするので、もしそうであるならば直してください。
該当のソースコード
python
1import numpy as np 2import pandas as pd 3import csv 4 5filename1 = "A-1.csv" 6file1 = open(filename1, 'w') 7 8filename2 = "A-2.csv" 9file2 = open(filename2, 'w') 10 11data = [] 12 13with open("sample1.dat", "r", encoding="utf-8") as f: 14 list = f.readlines() 15for i in list: 16 word = i.split() 17 data.append(word) 18 19for i in range(1,3,1): 20 if float(data[i][1])<1: 21 file1.write(str(data[i])+'\n') 22 elif float(data[i][1])<2: 23 file2.write(str(data[i])+'\n') 24 25with open("sample2.dat", "r", encoding="utf-8") as f: 26 list = f.readlines() 27for i in list: 28 word = i.split() 29 data.append(word) 30 31for i in range(1,3,1): 32 if float(data[i][1])<1: 33 file1.write(str(data[i])+'\n') 34 elif float(data[i][1])<2: 35 file2.write(str(data[i])+'\n')
試したこと
with構文を正しく理解していないのかなと思っていますが、よく分かりませんでした。
回答4件
あなたの回答
tips
プレビュー