首页 > 解决方案 > python根据行读取具有不同信息的文件

问题描述

我有一个奇怪的文件:

515   30.00398       30.00153
1  4
A B A
A B B
A B C
A B D
2  4
A C A
A C B
A C C
A C D

这是根据“fortran 逻辑”创建的(不幸的是)。我必须用python阅读它。对我来说,很难转向 python 逻辑。事实上,我必须阅读第一行并将其存储在一些变量中。第 2 行和第 7 行提供了与“字母”相关的其他变量的信息。我试着让自己清楚。

我有一个名为“细胞”的变量。每个单元格都有编号,在本例中为“1”和“2”。每个单元有 4*3 个元素。在此示例中,单元格“1”具有:

A B A
A B B
A B C
A B D

我怎样才能读取所有文件。

我学会了使用:

for line in Lines:
    count += 1
    print("Line{}: {}".format(count, line.strip()))

这似乎适用于所有行都具有相同类型元素的文件。我的档案呢。如何正确阅读?一些建议?

提前感谢您的任何帮助

标签: pythoninputreadlines

解决方案


# assuming that your file.txt is like

# 515   30.00398       30.00153
# 1  5
# A B A
# A B B
# A B C
# A B D
# P Q R
# 2  4
# A C A
# A C B
# A C C
# A C D

cells = [] # cell0, cell 1, cell2 etc

with open('file.txt') as f:
    # discarding 515   30.00398       30.00153
    next(f)
    
    cell_line = f.readline()
    while(cell_line != ''):
        cell_no, number_of_rows = map(int, cell_line.split())
        cell = [[0,0,0] for i in range(number_of_rows)]

        for i in range(number_of_rows):
            cell[i][0], cell[i][1], cell[i][2] = f.readline().split()
        cells.append(cell)

        cell_line = f.readline()
    
print(cells)

# [[['A', 'B', 'A'],
#   ['A', 'B', 'B'],
#   ['A', 'B', 'C'],
#   ['A', 'B', 'D'],
#   ['P', 'Q', 'R']], ---> cell 0
#  [['A', 'C', 'A'], ['A', 'C', 'B'], ['A', 'C', 'C'], ['A', 'C', 'D']]] ---> cell 1

推荐阅读