将文本文件读入矩阵 python

Read text file into matrix python

我想读取一个带有尾随空格的文本文件:

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'

我想我很接近..

您需要去除使用该值的位置。

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]]

line.rstrip()returns同样的文字右边没有空格。您可以使用它来删除右侧的空格。您可以使用 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"))