如何从文本文件中导入的数据创建二维列表



我正在尝试导入信息以创建 2D 列表,但我很难用信息填充列表。 我在尝试导入信息以创建列表时陷入困境

ROW = 3
COLS = 4
myInfo = ('myInfoFile.txt', 'r')
name = myInfo.readline().rsrip('n')
while name != '':
    address = myInfo.readline()
    telNum = float(myInfo.readline())
    email = myInfo.readline()
myInfo.close()
list1 = [[0, 0, 0, 0], 
        [0, 0, 0, 0], 
        [0, 0, 0, 0]]
for r in range(ROWS):
    for c in range(COLS):
        #this is the main area
        list1[r][c] = myInfo
print(list1)

假设您有一个包含 2D 矩阵的文本文件,这工作:

data_file = open('data.txt')
data = data_file.readlines()
for i in range(len(data)) :
    data[i] = list(map(float, data[i].split()))
print(data)

如果您使用的是 python2,请将列表参数放在 map 前面。

以下是数据的内容.txt :

1 2 34 5 67 8 9

输出:

[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]]

两件事是错误的

  • 读取文件时未分配数据
  • 您在使用数组时分配一个封闭的文件描述符试试这个 info=[[]*COLS for i in range(ROWS)] for i in range(ROWS): for j in range(COLS): info[i][j]=filename.readline #if float needed info[i[[j]=float(info[i][j])

因为 Python 中的数组是动态调整大小的,所以你可以使用 <list>.append() 函数向数组添加一些东西。向list1添加数组允许矩阵内出现未指定数量的行。下面是一些修改后的代码:

# The ROW and COLUMN variables aren't necessary.
myInfo = open('filetxt.txt', 'r')
list1 = [] # Not required to define the size of the array using zeros
while(True):
    name = myInfo.readline().rstrip('n')
    if(name != ''): # Check for missing names
        address = myInfo.readline().rstrip('n')
        telNum = float(myInfo.readline())
        email = myInfo.readline().rstrip('n')
    else:
        break
    list1.append([name, address, telNum, email])
print(list1)

使用以下测试数据,输出为:[['Alice', '1 River Drive', 3.14159265, 'alice@example.net'], ['Bob', '2 Mountain Way', 127.001, 'bob@example.net'], ['Carl', '33 Oak Tree Avenue', 987.654321, 'carl@example.net']]

具有以下输入:

Alice
1 River Drive
3.14159265
alice@example.net
Bob
2 Mountain Way
127.001
bob@example.net
Carl
33 Oak Tree Avenue
987.654321
carl@example.net

最新更新