将文本文件读入矩阵 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"))
我想读取一个带有尾随空格的文本文件:
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"))