在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
出现错误:键入错误,对象不能解释为整数。我在做什么错了?
我如何意识到这一点?
答案 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)