2017-08-14 117 views
0

我想用ascii.read掃描大量的製表數據文件。列標題似乎沒有自定義分隔符。每個列標題之間的範圍爲2到7個空格。這些文件看起來是這樣的:Python ascii.read選項卡(?)分隔符

K WAVELN NEFF  GEOM ALB BOND/QFIT BOND/GEOM Q-FITTED 
    1 0.3000000 0.0556723 0.0000000 0.0000000 2.1435934 2.0582306 
[...] 
[...] 

我第一次懷疑我可以把他們的標籤,但是這似乎並沒有這樣的情況:

raw = (ascii.read('filename', delimiter='\t') 

將讀取該文件,但只返回一個完全無用單列數據。現在

,這不會是在正常情況下一個問題 - 一個簡單的

delimter='\s' 

可以做的伎倆。無論如何,我感到沮喪的是,一列被命名爲「GEOM ALB」 - 在中間有一個空間。這敗壞了分隔符,因爲它認爲這是兩個列標題,沒有之一:

raw = (ascii.read('filename',delimiter='\s') 
InconsistentTableError: Number of header columns (8) inconsistent with data columns (7) at data line 0 

這是在有關文件中與「GEOM_ALB」取代「GEOM ALB」頭solveable,但是我寧願以避免花時間編寫腳本來做到這一點,特別是如果有更簡單和優雅的解決方案。

+1

這聽起來像你應該使用固定寬度的列而不是分隔的列。 – o11c

+0

好主意o11c - 我沒有想到這一點。我給了它一個旋轉,併產生了一個壞結果;讀者未能正確讀取表格。 – Izzy

回答

0

我在這裏找到了解決我的問題的解決方法。通過調用ascii.read作爲

raw = (ascii.read('filename',guess=False,header_start=None,data_start=2,names=('K','WAVELN','NEFF','GEOM ALB','BOND/QFIT','BOND/GEOM','Q-FITTED'))) 

我能夠繞過ascii.read企圖尋找和應用的標題名稱定義他們自己。關鍵當然是

header_start=None 

它告訴ascii.read沒有標題。