2017-11-26 11 views
1

텍스트 파일에서 두 매트릭스를 추가나는이 포함 된 텍스트 파일에서 두 행렬을 추가하려고

def addition(filename): 
a=[] 
b=[] 
with open(filename, 'r') as myfile: 
    data=myfile.read().split() 
    a=data[0].split() 
    b=data[1].split() 
a=a[0] 
b=b[0] 
print (a) 
sum = [] 
for i in range(len(a)): 
    print (i) 
    c = [] 
    for j in range(len(a[0])): 
     c.append(a[i][j]+b[i][j]) 
    sum.append(c) 
return sum 
:

[[0,1,2],[9,8,7]] [[6,5,4],[3,4,5]] 

이 코드를

는하지만 출력 :

[['[['], ['[['], ['06'], [',,'], ['15'], [',,'], ['24'], [']]'], 
[',,'], ['[['], ['93'], [',,'], ['84'], [',,'], ['75'], [']]'], [']]']] 

대신에 :

[[6,6,6],[12,12,12]] 

어떻게 해결할 수 있습니까? 감사!

답변

1

현재 stringsab이 - 에서 더 점은 당신이 lists에 은밀한하지 않습니다.

당신은 단지 elements (numbers)의하지 sumstringspositionelementcharactersconcatenation이며, 결과에서이를 볼 수 있습니다.


그래서,이 문제를 해결하기 위해, 우리는 단지 listsab 은밀한해야합니다. file의 내용이 항상 인 경우 lists (악의적 인 것을 쓸 수 있으므로 다른 사람이 볼 수 없으므로) eval()을 사용할 수 있습니다.

이 작동하는 방법의 데모 제공하려면 : 당신이 절대적으로 file의 내용을 신뢰할 수없는 경우, 그러나

>>> eval("[[0, 1, 2], [9, 8, 7]]") 
[[0, 1, 2], [9, 8, 7]] 

을, 당신은 ast.literal_eval 사용해야합니다

>>> import ast 
>>> ast.literal_eval("[[0, 1, 2], [9, 8, 7]]") 
[[0, 1, 2], [9, 8, 7]] 

바라기를, 당신은 code에 이것을 적용 할 수 있고, 나는 file에 접근 할 수 없기 때문에, 실제로 이것을 할 수는 없습니다. 유.

+0

감사합니다. @Joe Iddon! 이것은 많은 도움이되었습니다! –

+0

@FatCat 문제가 없습니다 ** :) ** –