Считать текстовый файл в матрицу python - PullRequest
0 голосов
/ 03 мая 2020

Я хочу прочитать текстовый файл с последними пробелами:

0 3 4 5 2 
3 0 2 4 0 
4 2 0 1 0 
5 4 1 0 0 
2 0 0 0 0

в матрицу, например, так:

[[0, 3, 4, 5, 2], [3, 0, 2, 4, 0], [4, 2, 0, 1, 0], [5, 4, 1, 0, 0], [2, 0, 0, 0, 0]]

Это то, что я до сих пор:

with open(filename, 'r') as filename:
   adjmtrx = [[int(num) for num in line.split(' ')] for line in filename if line.rstrip('')]

Но я получаю следующую ошибку:

adjmtrx = [[int(num) for num in line.split(' ')] for line in filename if line.strip() != " "]
ValueError: invalid literal for int() with base 10: '\n'

Я думаю, что я близко ..

Ответы [ 2 ]

2 голосов
/ 03 мая 2020

Вам нужно раздеть, где вы используете значение.

if line.rstrip('') не делает то, что вы думаете, он делает. Подробнее о .strip () .

with open(filename, 'r') as filename:
   adjmtrx = [[int(num) for num in line.strip().split(' ')] for line in filename]

print(adjmtrx)
# [[0, 3, 4, 5, 2], [3, 0, 2, 4, 0], [4, 2, 0, 1, 0], [5, 4, 1, 0, 0], [2, 0, 0, 0, 0]]
0 голосов
/ 03 мая 2020

line.rstrip() возвращает тот же текст без пробелов справа. Вы можете использовать это, чтобы удалить пробелы справа. Вы можете использовать split() для преобразования строки в список (аргумент по умолчанию - " ").

def read_file(file_name):
    with open(file_name, 'r') as filename:
        l = []
        for i in filename.readlines():
            l.append([int(ii) for ii in i.rstrip().split()])
        return l

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