如何在python中读取文件并将其内容保存到二维数组?

时间:2019-05-20 17:41:42

标签: python numpy

在python中,我需要读取一个txt文件,其中包含一个由A(起点),B(终点),空格(无墙)和*(无墙)组成的迷宫。这是一张图片,看起来像:

*************
*A*  *    * *
* * * * * * *
*   *   * * *
* * * * **  *
*   *    * B*
*************

我需要创建一个读取该文件并返回包含txt文件内容的二维数组(numpy库)的函数(0表示墙,1表示空格,2表示值A,3表示值) B)。数组的另一部分应该是列。我该怎么办?

我到目前为止:

导入numpy


def read_file:
    f = open("file.txt", "r")
    line = f.readline()
    array = numpy.zeros((line, line.split()), dtype=int)
    f.close()
    return array

出现错误:键入错误,对象不能解释为整数。我在做什么错了?

我如何意识到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用字典。我尚未测试以下代码,但我认为这可以工作。

编辑:我意识到numpy数组将是平面向量,而不是二维向量,并且我调整了代码以解决此问题。

def read_file(file):
    # dict storing replacements
    code = {'*':0,' ':1,'A':2,'B':3}
    f = open(file, "r")
    s = f.read()
    f.close()
    lines = s.split('\n')
    # get a list of lists with each character as a separate element
    maze = [list(line) for line in lines]
    # Get the dimensions of the maze
    ncol = len(maze[0])
    nrow = len(maze)
    # replace the characters in the file with the corresponding numbers
    maze = [code[col] for row in maze for col in row]
    # convert to numpy array with the correct dimensions
    maze = numpy.array(maze).reshape(nrow,ncol)
    return(maze)