从文本文件读取数据 python

1 投票
4 回答
4394 浏览
提问于 2025-04-16 18:39

我有一个文本文件,里面包含了一组数字的矩阵:

999 999  10  8
3 4 999 999 999 
6 999 2 7 999
999 6 3 5  6
999 9 1 10 999
10 6 999 2 2 999

我想在Python中逐行读取这些内容,并把它们存储到一个数组里,但我在把每个值从string(字符串)转换成int(整数)时遇到了困难。我尝试在解析每一行时使用int(),但出现了错误,提示不能把list(列表)传给int()这个函数。

4 个回答

0

对于每一行,先根据空格把它分开,然后把每个分开的部分转换成整数。可以用一种叫做列表推导的方法来实现,代码如下:

s = "999 999 10 8"
[int(t) for t in s.split(" ")]
#evaluates to [999, 999, 10, 8]
2

使用 map() 函数来获取一个包含多个列表的 list

>>> with open('myfile.txt') as matrix:
...     [map(int, line.split()) for line in matrix]
...
[[999, 999, 10, 8], [3, 4, 999, 999, 999], [6, 999, 2, 7, 999], [999, 6, 3, 5, 6], [999, 9, 1, 10, 999], [10, 6, 999, 2, 2, 999]]
3

试试这个:

matrix = [[int(i) for i in line.split()] for line in open('myfile.txt')]

[编辑] 如果你不想要第一行,就在之前先读取一下。

with open('myfile') as f:
    f.readline()
    matrix = ....

撰写回答