Как прочитать файл в Python и сохранить его содержимое в двухмерном массиве? - PullRequest
0 голосов
/ 20 мая 2019

В python мне нужно прочитать текстовый файл, который состоит из лабиринта, состоящего из A (начальная точка), B (конечная точка), пробелов (без стены) и * (для стены). Вот как это может выглядеть:

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

Мне нужно создать функцию, которая читает этот файл и возвращает двумерный массив (пустая библиотека), который состоит из содержимого текстового файла (0 для стены, 1 для пробела, 2 для значения A и 3 для значения Б). В другой части массива должен быть столбец. Как я это делаю?

Я так далеко:

импорт 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 голосов
/ 20 мая 2019

Вы можете использовать диктовку.Я не тестировал следующий код, но думаю, что это сработает.

Редактировать: я понял, что пустой массив будет представлять собой плоский вектор вместо 2-мерного, и я изменил код для решения этой проблемы.

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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...