2017-04-12 9 views
0

나는 스도쿠를 읽고 목록에 넣으려고하는데, 나는 이런 것을 가지고있다.목록에있는 텍스트 python

0,0,0,0,7,0,2,6,0 0,6,0,8,0,2,0,3,5 0,0,5,3,0,0,0,7,0 0,7,6,0,0,0,0,2,0 0,8,9,6,0,0,0,4,0 0,3,0,5,4,0,0,8,0 0,0,0,2,8,0,0,0,0 0,2,0,4,0,0,0,0,3 0,0,8,7,0,3,6,0,0

내가이 코드를 사용하고이

board = [['0', '0', '0', '0', '7', '0', '2', '6', '0'], ['0', '6', '0', '8',  
'0', '2', '0', '3', '5'], ['0', '0', '5', '3', '0', '0', '0', '7', '0'], 
['0','7', '6', '0', '0', '0', '0', '2', '0'], ['0', '8', '9', '6', '0', 
'0', '0','4', '0'], ['0', '3', '0', '5', '4', '0', '0', '8', '0'], 
['0', '0', '0', '2','8', '0', '0', '0', '0'], ['0', '2', '0', '4', '0', 
'0', '0', '0', '3'], ['0','0', '8', '7', '0', '3', '6', '0', '0']] 

같은 목록에 변환이 필요하지만 문제를 가지고

tablero = open('sd1.txt', 'r') board = [line.split(',') for line in tablero.readlines()]

결과는 다음과 같습니다

board = [['0', '0', '0', '0', '7', '0', '2', '6', '0\n'], ['0', '6', '0', 
'8', '0', '2', '0', '3', '5\n'], ['0', '0', '5', '3', '0', '0', '0', '7', 
'0\n'], ['0', '7', '6', '0', '0', '0', '0', '2', '0\n'], ['0', '8', '9', 
'6', '0', '0', '0', '4', '0\n'], ['0', '3', '0', '5', '4', '0', '0', '8', 
'0\n'], ['0', '0', '0', '2', '8', '0', '0', '0', '0\n'], ['0', '2', '0', 
'4', '0', '0', '0', '0', '3\n'], ['0', '0', '8', '7', '0', '3', '6', '0', 
'0\n']] 

답변

2

사용 .strip()는 선도 (당신의 문제의 원인이되는 후행 줄 바꿈 포함)의 공백을 후행 제거합니다 :

board = [line.strip().split(',') for line in tablero.readlines()] 
0

난 당신이 line.strip('\n\r')을 사용하여 '\ n을'을 제거해야 할 것 같아요.

line[:-1].split(',')을 사용하거나 마지막 줄 바꿈 문자를 제거 할 수도 있습니다.

0

라인 끝에 문제가있는 경우에 대비하여 동일한 부분을 똑같은 Jez로 만들 수 있지만 오른쪽 부분 만 가능합니다. 기본적으로는 문자열의 오른쪽 만 동일하게합니다.

board = [line.rstrip().split(',') for line in tablero.readlines()]