如何将文件中的一行变成二维数组

How to turn a line in a file into a 2d array

我是 python 的新手,我一直在努力编写一个程序,该程序将文件中的一行作为输入来验证 Lo Shu 幻方。我需要做的是一次读取文件中的一行,每一行 1 2 3 4 5 6 7 8 9 例如,并将其转换为二维数组,例如 [[1,2,3],[4,5,6],[7,8,9]] 前三个数字对应幻方第一行的值,接下来的三个值对应第二行,最后三个值对应最后一行。

到目前为止我已经试过了

def main():
  data = []
  for line in open('Magic Square Input.txt'):
    items = line.split(" ")
    temp = 0
    setOfThree = []
    for item in items:

        if(len(item) > 1):
            item = item[0:1]

        if(item != " "):
            setOfThree.append(item)
            temp += 1


        if(temp == 3):
            test = []
            test = setOfThree[:]
            test = [int(x) for x in test]
            data.append(test)

但这只会给我

[[4, 3, 8]]
[[4, 3, 8], [8, 3, 4]]
[[4, 3, 8], [8, 3, 4], [6, 1, 8]]
[[4, 3, 8], [8, 3, 4], [6, 1, 8], [6, 9, 8]]
[[4, 3, 8], [8, 3, 4], [6, 1, 8], [6, 9, 8], [6, 1, 8]]
[[4, 3, 8], [8, 3, 4], [6, 1, 8], [6, 9, 8], [6, 1, 8], [6, 1, 3]]
[[4, 3, 8], [8, 3, 4], [6, 1, 8], [6, 9, 8], [6, 1, 8], [6, 1, 3], [5, 5, 5]]

文本文件的内容是

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

所以我觉得我在正确的轨道上,但它只是将每行的前三项附加到数据,我无法弄清楚为什么

行总是有 9 个元素,所以

line = "1 2 3 4 5 6 7 8 9"

items = line.split()

result = [items[0:3], items[3:6], items[6:9]]

print(result)

编辑: 与所有行相同

lines = """4 3 8 9 5 1 2 7 6
8 3 4 1 5 9 6 7 2
6 1 8 7 5 3 2 9 4
6 9 8 7 5 3 2 1 4
6 1 8 7 5 3 2 1 4
6 1 3 2 9 4 8 7 5
5 5 5 5 5 5 5 5 5"""

data = []

for line in lines.split('\n'):

    items = line.split()

    data.append([items[0:3], items[3:6], items[6:9]])

print(data)

如果你需要更通用的-针对不同的N

N = 3

data = []

for line in lines.split('\n'):

    items = line.split()
    array = []

    while items:
        array.append(items[:N])
        items = items[N:]

    data.append(array)

print(data)