如何使用Python读取文本文件并将其存储在二维列表中?

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

我正在尝试从现有的文本文件中读取数据,然后将其打印为三角形。

distance_matrix.txt

[0]

[1, 0]

[13, 12, 0]

[17, 16, 10, 0]

[16, 15, 8, 1, 0]

[13, 12, 4, 5, 4, 0]

[12, 11, 6, 11, 10, 6, 0]
  • 首先,我打开文本文件,然后阅读并将其存储在列表中:
file1 = open("distance_matrix.txt", "r")
   contents1 = file1.readlines()
  • 接下来,我尝试将每个数字单独拆分,以便将其存储在二维列表中:
for i in contents1.split(", "):
     numbers = re.split(', |\[|\]', i)
     numbers.remove('')
     numbers.remove('\n')
     for j in contents1[i]:
          numbers.append(contents1[i][j])
          print(contents1[i][j])

但是这不起作用!

总之,我在这里要做的是从文本文件中读取每一行,然后将每个数字分割并放入矩阵中。

python list file multidimensional-array readfile
2个回答
0
投票

使用json从字符串中解析列表。

import json
filename = "distance_matrix.txt"
f = open(filename,"r")
lines=f.readlines()

result_matrix = []
for line in lines:
    result_matrix.append(json.loads(line))

print(result_matrix)
#[[0], [1, 0], [13, 12, 0], [17, 16, 10, 0], [16, 15, 8, 1, 0], [13, 12, 4, 5, 4, 0], [12, 11, 6, 11, 10, 6, 0]]

0
投票

您可以执行以下操作,此解决方案使用re库,您可以在here中阅读有关此库的更多信息:

import re

arr = []
file_name = "dist_mat.txt"
with open(file_name, 'r') as fp:
    lines = fp.readlines()
    for l in lines:
        matches = re.findall("(\d+)", l)
        arr.append(list(map(int, matches)))
print(arr[0][:])
print(arr[1][:])
print(arr[2][:])

这将为您提供以下输出:

[0]
[1, 0]
[13, 12, 0]

现在每一行都按需要存储在数组中,arr[pos_i][pos_j]

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