如何在Python中读取输入文件?

Cra*_*ock 6 python list

如果我问一个愚蠢的问题,请原谅我,但我相信我有一个问题.

我最近开始学习Python,并尝试解决一些基于算法的问题.但有一个问题是,每个Algo挑战都带有一些输入文件.它通常包括一些测试用例计数,测试用例等

4 #cases

1 2 5 8 4 #case 1
sadjkljk kjsd #case 2
5845 45 55 4 # case 3
sad sdkje dsk # case 4
Run Code Online (Sandbox Code Playgroud)

现在要开始解决问题,您需要控制输入数据.我已经看到在python开发人员中大多Lists用来保存他们的输入数据.

我试过了:

fp = open('input.txt')
    for i, line in enumerate(fp.readlines()):
        if i == 0:
            countcase = int(i)
            board.append([])
        else:
            if len(line[:-1]) == 0:
                currentBoard += 1
                board.append([])
            else:
                board[currentBoard].append(line[:-1])
    fp.close()
Run Code Online (Sandbox Code Playgroud)

但我不觉得这是解析任何给定输入文件的最佳方法.

解析输入文件的最佳做法是什么?我可以遵循的任何特定教程或指导?

wai*_*kuo 7

不知道你的情况是整数还是字符串,所以我将它们解析为字符串:

In [1]: f = open('test.txt')

In [2]: T = int(f.readline().strip())

In [3]: f.readline()
Out[3]: '\n'

In [4]: boards = []

In [5]: for i in range(T):
   ...:     boards.append(f.readline().strip().split(' ')) 
   ...:     

In [7]: for board in boards: print board
['1', '2', '5', '8', '4']
['sadjkljk', 'kjsd']
['5845', '45', '55', '4']
['sad', 'sdkje', 'dsk']
Run Code Online (Sandbox Code Playgroud)

编辑

如果列表推导对您来说很舒服,请尝试:

boards = [f.readline().strip().split(' ') for i in range(T)]
Run Code Online (Sandbox Code Playgroud)