将sys.stdin读取的数组转换为“正常”格式

时间:2019-05-16 08:00:15

标签: python numpy format

我有一个程序可以创建一个魔方,另一个程序应该读取此输出并确认它是一个魔方。

使用secound程序,我用

读取了第一个程序的输出
array = []


for zeile in sys.stdin:
    zeile = str.strip(zeile)
    array.append(zeile)

这导致#(1)

['[17 24  1  8 15]', '[23  5  7 14 16]', '[ 4  6 13 20 22]', '[10 12 19 21  3]', '[11 18 25  2  9]']

我需要的是#(2)

[17 24  1  8 15]
[23  5  7 14 16]
[ 4  6 13 20 22]
[10 12 19 21  3]
[11 18 25  2  9]

由第一个程序制成。

所以我的问题是如何格式化在#(1)中获得的结果,以便获得所需的数组? (#(2))?

1 个答案:

答案 0 :(得分:0)

我找到了解决方法

我将我从第一个程序获得的标准输入打印到一个外部文件中,然后我将其读入并进行操作,以使其满足我的需求

以下是一些代码:

data = open('magischesDreieckErzeugt.txt', 'w')
for zeile in sys.stdin:
    zeile = str.strip(zeile)
    print(zeile, file=data)
    if zeile == 'Bitte korrigieren Sie Ihre Eingabe!':
        print('Korrigieren Sie Ihre Eingabe im 1. Teil des Programms!')
        quit()
    else:
        print(zeile)
data.close()

并阅读:


with open('magischesDreieckErzeugt.txt') as infile:
    quadrat = np.fromstring( infile.read().replace('[','').replace(']', ''), sep=' ')

# bestimme da maximum des arrays und ziehe die wurzel um die länge (= höhe) des arrays zu ermitteln
x = int(np.sqrt(np.max(quadrat)))

# formatiere das array in ein x mal x array im
quadrat = np.reshape(quadrat, (-1,x))