複数のtxtファイルから数値のみを自動で取り出し,一つのテキストファイルに出力したいです.(可能であればExcelファイルに出力したいです.)
例としてテキストファイルの中身は,
#初期段階
X1-1
QE:gate
2.090633E-13
のようなものになっています.
ファイル名はcoulomb_~.txtです.
#一度目の修正後
知識が浅いため,ネットを参考に自分で作ってみたプログラムが以下です.
import pandas as pd
import glob
import re
all_files = glob.glob( "*.txt")
li = []
for filename in all_files:
df = pd.read_csv(filename, header=None,delimiter=" ")
df_num = re.sub(r"\d+","",df)
li.append(df_num)
frame = pd.concat(li, axis=0, ignore_index=True)
しかしこれでは,expected string or bytes-like objectというエラーがでて不可能でした.
#二度目の修正後
回答者様のおかげですべてのファイル内に存在するデータを一つのExcelファイルにすることはできましたが,どのファイルのデータとつながっているのかわからず,整理が難しいまま残ってしまいました.
ファイル名のcoulombの後には-2~3の数値が0.1刻みに存在しているのですが,これらのファイルが小さい順でしっかり並んでくれれば問題ないのですが,数値の絶対値でファイルが並び替えられてしまうので,順番に値を取得できるようにしたいです.
import pandas as pd
import glob
import re
import os
def get_num(file):
nums = []
with open(file) as f:
for line in f:
"実際に数値に変換してみて、できたものだけ取得する"
try:
nums.append( float(line.strip()))
except ValueError:
pass
return nums
nums = []
hoge = glob.glob("*.txt")
for file in hoge: # 取得対象のtxtファイルをglobなり取得する
nums += get_num(file)
df = pd.DataFrame([nums])
df.to_excel("ret.xlsx", header=False, index=False)
#三度目の修正後
Excelでデータの入れ替えなどが行えたためこれで完了とします.
回答1件
あなたの回答
tips
プレビュー