【问题标题】:Python ascii.read tab(?) delimitersPython ascii.read 制表符(?)分隔符
【发布时间】:2017-08-14 18:56:43
【问题描述】:

我正在尝试使用 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”来解决,但是我宁愿避免花时间编写脚本来执行此操作,特别是如果有更简单和优雅的解决方案。

【问题讨论】:

  • 听起来您应该使用固定宽度的列而不是分隔的列。
  • 好主意 o11c - 我没想到。我试了一下,结果很糟糕;阅读器未能正确阅读表格。

标签: python python-2.7 delimiter


【解决方案1】:

我在这里找到了解决问题的方法。通过调用 ascii.read as

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 没有标题。

【讨论】:

    猜你喜欢
    • 2012-12-09
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 2010-09-22
    • 2011-06-09
    • 2011-01-31
    相关资源
    最近更新 更多