将文本文件读入矩阵python

问题描述 投票:0回答:2

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

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'

我想我要亲近了。

python removing-whitespace
2个回答
1
投票
您需要删除使用该值的位置。

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
投票
line.rstrip()返回相同的文本,右边没有空格。您可以使用它删除右侧的空格。您可以使用split()将行转换为列表(其默认参数为" ")。

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

© www.soinside.com 2019 - 2024. All rights reserved.