Python ascii.read选项卡(?)分隔符

时间:2017-08-14 18:56:44

标签: python python-2.7 delimiter

我正在尝试使用ascii.read扫描大量的表格数据文件。列标题似乎没有自洽的分隔符。每个列标题之间有2到7个空格。文件看起来像这样:

  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”标题来解决,但是我宁愿花时间编写脚本来执行此操作,特别是如果有更简单和优雅的话溶液

1 个答案:

答案 0 :(得分: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没有标题。