2017-03-16 4 views
0

(n, 4,5) 파이썬 numpy 배열에 내 데이터를 입력하고 싶습니다. 간단한 해결책이 있습니까?문자열을 다차원 배열로 변환

내가 파일의 각 라인은 파이썬의 배열처럼 보이지만 있도록 내 데이터의 형식을했습니다의 예를 들어, 파이썬 배열로 읽어 하드 :

[0,0,0,1,1],[0,0,0,0,0],[0,1,1,0,0],[1,0,0,0,0] //line1 
[1,0,0,1,0],[0,1,0,0,0],[0,0,1,0,0],[0,0,0,1,0] //line2 
... 

욕망 출력 :

myarray=[[[0,0,0,1,1],[0,0,0,0,0],[0,1,1,0,0],[1,0,0,0,0]],[[1,0,0,1,0],[0,1,0,0,0],[0,0,1,0,0],[0,0,0,1,0]]...] 
는 잘 작동하지 스트립, 평가 및 JSON을 보인다 ..

도와주세요 나는 또한 시도했다 :

01 2,
+0

이미 시도한 것을 보여주십시오. – thefourtheye

답변

2

브래킷 중 하나 이상의 쌍의 각 행 바꿈 후 적절한 평가 함수에 건네

import ast 

arr = [] 
with open('input.txt', 'r') as infp: 
    for l in infp: 
     arr.append(ast.literal_eval('[%s]' % l)) # replace with eval() if you trust your input data 

print(arr)  

출력 :

[[[0, 0, 0, 1, 1], [0, 0, 0, 0, 0], [0, 1, 1, 0, 0], [1, 0, 0, 0, 0]], [[1, 0, 0, 1, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0]]] 

그리고 약간의 설명, 요청에 따라 :

  • 입력 파일의 각 줄의 형식은 [1,2],[3,4]이며 파이썬 목록 -의 목록을 [[1, 2], [3, 4]] 것 때문에, '[%s]'가있는 라인을 포장하는 데 사용됩니다 파이썬을 유효하게하는 한 쌍의 괄호.
  • ast.literal_eval()은 리터럴 만 허용하는 안전한 형식입니다 (함수 호출이나 다른 것들을 허용하지 않습니다).

  • 모두 [1, 2], [3, 4] 라인의 경우 유효 코드는 eval('[[1, 2], [3, 4]]')입니다.

+0

그것이 작동합니다! 'ast.literal_eval ('[% s] '% l)'에 대해 물어봐도 될까요? – once

+1

@once 게시물에 설명이 추가되었습니다. 다행스럽게 도울 수있어! – AKX

+0

oic! 나는 eval 작업을하기 위해 바깥 쪽 괄호를 놓쳤다! – once

-1

텍스트 = "A, B, C '

텍스트 text.split = (' ')

텍스트 ['A ','B ','C ']

관련 문제