Dec-18-2018, 08:44 PM
(This post was last modified: Dec-18-2018, 08:51 PM by Gribouillis.)
I have a longer solution, but as your data resembles a Sudoku board, I think it might be interesting
allbox = u''.join(chr(9472 + x) for x in range(200)) box = [ allbox[i] for i in (2, 0, 12, 16, 20, 24, 44, 52, 28, 36, 60) ] (vbar, hbar, ul, ur, ll, lr, nt, st, wt, et, plus) = box hh = hbar * 7 nl = '\n' topline = ul + (hh + nt) * 2 + hh + ur midline = wt + (hh + plus) * 2 + hh + et botline = ll + (hh + st) * 2 + hh + lr def to_str(board): result = [topline + nl] for i, z in zip(range(0, 9, 3), (midline + nl, midline + nl, botline)): for row in board[i:i+3]: result.append( vbar + vbar.join( ' ' + ' '.join(str(k) for k in row[j:j+3]) + ' ' for j in range(0, 9, 3)) + vbar + nl) result.append(z) return ''.join(result) if __name__ == '__main__': data = [ ['.', '.', '.', '.', '.', 9, '.', '.', '.'], ['.', '.', 7, '.', 8, 6, '.', '.', '.'], [6, '.', '.', 3, '.', '.', '.', '.', '.'], ['.', 4, '.', '.', '.', 7, '.', '.', 8], ['.', '.', '.', '.', '.', '.', '.', 3, 2], ['.', '.', 3, 6, '.', 5, 1, '.', '.'], ['.', 6, '.', 7, '.', '.', '.', 8, '.'], [3, '.', 2, '.', '.', '.', 4, 9, '.'], ['.', 5, 4, 8, '.', '.', '.', '.', 3]] print(to_str(data))
Output:┌───────┬───────┬───────┐
│ . . . │ . . 9 │ . . . │
│ . . 7 │ . 8 6 │ . . . │
│ 6 . . │ 3 . . │ . . . │
├───────┼───────┼───────┤
│ . 4 . │ . . 7 │ . . 8 │
│ . . . │ . . . │ . 3 2 │
│ . . 3 │ 6 . 5 │ 1 . . │
├───────┼───────┼───────┤
│ . 6 . │ 7 . . │ . 8 . │
│ 3 . 2 │ . . . │ 4 9 . │
│ . 5 4 │ 8 . . │ . . 3 │
└───────┴───────┴───────┘