使用 Python 从包含多组数据的文件中读取指定列

我正在尝试使用 python 从 .txt 文件加载多列数据。


我的文件包含多组数据,每组都有一个标题。


我想选择一个集合,然后从中选择 2 列。我正在使用 genfromtxt 读取 .txt 文件,但它将集合的标题作为列读取,因此它给了我这种错误:


第 2 行(有 4 列而不是 1 列)


这是我的 txt 文件的示例,其中 TC_14TeV_NLO 和 TC_13TeV_LO 是标题,我想取每组的前 2 列:


TC_14TeV_NLO 

1000 1.51100e+01 6.2e-03 4.1e-02%

2000 7.36556e-01 4.4e-04 5.9e-02%

3000 7.85092e-02 5.1e-05 6.5e-02%

4000 1.17810e-02 7.4e-06 6.3e-02%

5000 2.39873e-03 1.3e-06 5.2e-02%

6000 7.18132e-04 2.7e-07 3.7e-02%

7000 3.10281e-04 8.1e-08 2.6e-02%

8000 1.67493e-04 3.3e-08 1.9e-02%

9000 1.01369e-04 2.2e-08 2.2e-02%

10000 6.54776e-05 1.6e-08 2.4e-02%


TC_13TeV_LO

1000 1.04906e+01 1.7e-03 1.7e-02%

2000 4.53170e-01 8.1e-05 1.8e-02%

3000 4.25722e-02 7.9e-06 1.9e-02%

4000 5.80036e-03 1.1e-06 1.9e-02%

5000 1.17278e-03 2.1e-07 1.8e-02%

6000 3.82330e-04 6.1e-08 1.6e-02%

7000 1.78036e-04 2.7e-08 1.5e-02%

8000 9.91945e-05 1.9e-08 1.9e-02%

9000 6.05766e-05 1.6e-08 2.6e-02%

10000 3.92631e-05 1.2e-08 3.0e-02%


胡说叔叔
浏览 396回答 2
2回答

Helenr

首先,定义一个函数将文件拆分为多个部分。这是一个生成器,它生成一系列行列表:def split_sections(infile):    """Generate a sequence of lists of lines from infile delimited by blank lines.    """    section = []    for line in infile:        if not line.strip():            if section:                yield section                section = []        else:            section.append(line)    if section: # last section may not have blank line after it        yield section那么你的实际任务相当简单:with open(path) as infile:    for lines in split_sections(infile):        heading = lines[0].rstrip()        data = np.genfromtxt(lines[1:], usecols=[0,1])        print(heading)        print(data)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python