Re: [問題] 如何讀取特定格式檔案
後來就用re解決了
雖然寫出來不是很漂亮,但還是給需要的人參考
import numpy as np
import re
f=open('file')
l1=f.readlines(1) # 先把頭兩行去掉
l2=f.readlines(1)
data=f.readlines()
f.close()
ds= np.zeros([len(data)//3,10])
for i in range(len(data)//3):
row0=data[3*i+0]
row1=data[3*i+1]
row2=data[3*i+2]
d0=re.findall(r"[-+]?\d*\.\d+|\d+",row0)
d0=[float(x) for x in d0]
d1=re.findall(r"[-+]?\d*\.\d+|E\d+",row1)
d1=[float(x) for x in d1]
d2=re.findall(r"[-+]?\d*\.\d+|E\d+",row2)
d2=[float(x) for x in d2]
ds[i,0:3]=d0
ds[i,3:7]=d1
ds[i,7:10]=d2
--
如果大家有更簡潔的寫法,也歡迎來交流一下 >"<
※ 引述《windless99 ( )》之銘言:
: 各位大大好,我是從matlab轉到python的新手
: 現在有一組數據 前兩行是我不要的
: 後面的數據共有十欄,分別寫在三行
: 數據如下:
: LD 1 37.0288004\n
: 1301 10\n
: 0 36.5288004 -0.5000000\n
: 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00\n'
: 0.0000000E+00 0.0000000E+00 0.0000000E+00\n'
: 1 36.5376466 -0.4911538\n'
: 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00\n'
: 0.0000000E+00 0.0000000E+00 0.0000000E+00\n'
: 2 36.5464927 -0.4823077\n'
: 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00\n'
: 0.0000000E+00 0.0000000E+00 0.0000000E+00\n
: .
: .
: .
: ==
: 以往用matlab可以用textscan讀取數據,即:
: fid=fopen('檔案名稱')
: fgetl(fid);
: fgetl(fid);
: data=textscan(fid,'%f %f %f \n %f %f %f %f \n %f %f %f');
: data=cell2mat(data);
: fclose(fid);
: 把數據讀取出來,讀出來的數據如下:
: 0 140.057019200 -0.500000000 0 0 0 0 0 0 0
: 1 140.065865400 -0.491153800 0 0 0 0 0 0 0
: 2 140.074711500 -0.482307700 0 0 0 0 0 0 0
: .
: .
: .
: 然而轉到python卻卡住了 QQ
: 目前只寫出
: l1=f.readlines(1)
: l2=f.readlines(1)
: ds=f.readlines()
: 數據會全部弄成同一欄
: 有上網查詢可以用np.loadtxt
: 不過怎麼嘗試都失敗
: 請問各位大大該怎麼讀檔嗎?
: 謝謝大家了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.26.21.44
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1556722228.A.E11.html
推
05/02 02:46,
6年前
, 1F
05/02 02:46, 1F
→
05/02 02:48,
6年前
, 2F
05/02 02:48, 2F
→
05/02 02:48,
6年前
, 3F
05/02 02:48, 3F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
2
3
Python 近期熱門文章
PTT數位生活區 即時熱門文章