質問: 8.449E-19 -1.406E-04 -1.711E-04 8.832E-04 1.156E-03」ここまで1要素にはいってしまう. 2.スペース区切りとも言えない感じなので,with openでパスを指定し,一度,CSVに変換する.スペースを','に置きかえ(記載ソース) ↓結果 ,Y,IN(I),=,8.449E-19,-1.406E-04,-1.711E-04,8.832E-04,1.156E-03 ,1.985E-03,1.051E-03,8.782E-04,5.164E-04,3.921E-04 →これをPandasのread_csvで読む 1要素ずつデータは格納されたが,さらに後処理するの ここからまとめるのもいいが, 初期のforループで配列格納を逐次行いたい ### 補足情報(FW/ツールのバージョンなど) Spyderで作業しています.
回答: 以下のような感じで正規表現で`=~改行~改行改行`の単位で抽出していけばよいかと思います。 ``` import re from io import StringIO # テストデータ s = """data (A) = 8.449E-19 -1.406E-04 -1.711E-04 8.832E-04 1.156E-03 1.985E-03 1.051E-03 8.782E-04 5.164E-04 3.921E-04 data (B) = -9.936E-06 -1.504E-04 -1.712E-04 8.980E-04 1.274E-03 2.044E-03 1.040E-03 8.514E-04 4.703E-04 3.700E-04 """ datas = StringIO(s).read() # 全部読み込む datas += '\n\n' # 念のため番兵をつける # 1行分の文字列を数値リストに def to_list(s): return [float(e) for e in re.split(r'\s+', s.strip(' '))] data = {} for m in re.finditer(r'data \((.*?)\).*?=(.*?)\n(.*?)\n\n', datas, re.MULTILINE): line = to_list(m.group(2)) + to_list(m.group(3)) # 2行 -> 1行の数値リストに data[m.group(1)] = line print(data) #{'A': [8.449e-19, -0.0001406, -0.0001711, 0.0008832, 0.001156, 0.001985, 0.001051, 0.0008782, 0.0005164, 0.0003921], 'B' #: [-9.936e-06, -0.0001504, -0.0001712, 0.000898, 0.001274, 0.002044, 0.00104, 0.0008514, 0.0004703, 0.00037]} ```