0
EXPERIMENT : KSAS1201 SG CLIMAT CHANGE
DATA PATH : C:\DSSAT45\Sorghum\
TREATMENT 1 : N.American SGCER045

@     VARIABLE                              SIMULATED     MEASURED
  --------                                 -------     --------
  Panicle Initiation day (dap)                   62          -99
  Anthesis day (dap)                            115          -99
  Physiological maturity day (dap)              160          -99
  Yield at harvest maturity (kg [dm]/ha)       8478          -99
  Number at maturity (no/m2)                  32377          -99
  Unit wt at maturity (g [dm]/unit)           .0262          -99  

嗨,我有像上面这样的文本文件。如果可能的话,我想知道如何只读取列(比如下面模拟和测量的整个列),如果可能的话,我还想知道如何使用 python 在 Excel 文件中导入这些列。

4

3 回答 3

1

将列读入列表的简单方法(假设标题始终为 6 行):

simulated = []
measured = []

with open('input.file') as f:
    for l in f.readlines()[6:]:
        l = l.split()
        simulated.append(l[-2])
        measured.append(l[-1])

print simulated
print measured

给出:

['62', '115', '160', '8478', '32377', '.0262']
['-99', '-99', '-99', '-99', '-99', '-99']

请注意,列表仍然包含数字的字符串表示形式。解析为数字:

simulated.append(float(l[-2]))
measured.append(int(l[-1]))
于 2012-08-04T21:17:15.820 回答
0

Theodros 为阅读文件给出了很好的答案。要将其导入 excel,您可以将其保存为 csv(使用csv模块),也可以尝试使用xlwt模块(可从 PyPi 获得)。

于 2012-08-04T21:27:20.747 回答
0
from itertools import islice

with open('some.file') as fin:
    for line in islice(fin, 6, None):
        desc, simulated, measured = ' '.join(line.split()).rsplit(' ', 2)
        # do any necessary conversions

然后查看xlwt/csv或 XML 或其他任何内容,以便可以将其读回其他内容...

于 2012-08-04T22:42:08.650 回答