【问题标题】:How to read a text file and store it in a two-dimensional list Using Python?如何使用 Python 读取文本文件并将其存储在二维列表中?
【发布时间】:2019-12-15 07:08:48
【问题描述】:

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

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])

但这不起作用!

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

【问题讨论】:

  • 您要提取列表吗?
  • 您的文件是否真的包含这些列表?大括号?
  • 数据是怎么划分的?
  • 请澄清您的问题,它太模糊和模棱两可。 这不起作用到底是什么意思?你有没有做过任何研究,有大量的指南和教程。另外,使用上下文管理器来处理文件对象,如果你打算遍历每一行,不要使用readlines()
  • 基本上我在 distance_matrix.txt 中有这些数字,如上图所示的三角形。我想读取该文件并将每个数字单独存储在一个矩阵中,我可以通过它的位置访问每个数字,例如: number[1][1] 这会给我 0

标签: python list file multidimensional-array readfile


【解决方案1】:

使用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]]

【讨论】:

  • 使用上下文管理器来处理文件对象,你可以摆脱readlines(),这只是额外的工作。
【解决方案2】:

您可以执行以下操作,此解决方案使用 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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 2014-08-27
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多