전에 어딘가에서 몇 가지 예를 보았지만 내 삶을 위해 인터넷 검색을 할 때 찾을 수 없다는 것을 알고 있습니다.
데이터 행이 있습니다.
data = [[1,2,3],
[4,5,6],
[7,8,9],
]
이 데이터를 테이블에 출력하고 싶습니다.
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 4 | 5 | 6 |
+---+---+---+
| 7 | 8 | 9 |
+---+---+---+
분명히 나는 prettytable과 같은 라이브러리를 사용하거나 pandas 등을 다운로드 할 수 있지만 그렇게하는 데는 무관심합니다.
내 행을 Jupyter 노트북 셀의 테이블로 출력하고 싶습니다. 어떻게해야합니까?
답변
방금 tabulate 에 HTML 옵션이 있고 사용하기가 다소 간단 하다는 것을 알았습니다 .
Wayne Werner의 답변과 매우 유사합니다.
from IPython.display import HTML, display
import tabulate
table = [["Sun",696000,1989100000],
["Earth",6371,5973.6],
["Moon",1737,73.5],
["Mars",3390,641.85]]
display(HTML(tabulate.tabulate(table, tablefmt='html')))
셀을 병합하고 노트북에서 변수 대체를 수행하기 위해 라텍스 구문 및 서식과 같이 더 복잡한 테이블 레이아웃을 만드는 데 사용하기 쉬운 방법을 찾고 있습니다.
마크 다운 셀에서 Python 변수에 대한 참조 허용 # 2958
답변
멋진 트릭이 있습니다. 데이터를 pandas DataFrame으로 래핑합니다.
import pandas as pd
data = [[1, 2], [3, 4]]
pd.DataFrame(data, columns=["Foo", "Bar"])
다음과 같은 데이터를 표시합니다.
| Foo | Bar |
0 | 1 | 2 |
1 | 3 | 4 |
답변
마침내 제가 찾고 있던 jupyter / IPython 문서 를 다시 찾았습니다 .
나는 이것이 필요했다 :
from IPython.display import HTML, display
data = [[1,2,3],
[4,5,6],
[7,8,9],
]
display(HTML(
'<table><tr>{}</tr></table>'.format(
'</tr><tr>'.join(
'<td>{}</td>'.format('</td><td>'.join(str(_) for _ in row)) for row in data)
)
))
(나는 이해력을 약간 망쳐 놓았을 수도 있지만 display(HTML('some html here'))
우리가 필요로했던 것입니다)
답변
표 텍스트가 잘 맞습니다.
import tabletext
data = [[1,2,30],
[4,23125,6],
[7,8,999],
]
print tabletext.to_text(data)
결과:
┌───┬───────┬─────┐
│ 1 │ 2 │ 30 │
├───┼───────┼─────┤
│ 4 │ 23125 │ 6 │
├───┼───────┼─────┤
│ 7 │ 8 │ 999 │
└───┴───────┴─────┘
답변
약간의 html을 사용해도 괜찮다면 이와 같은 것이 작동 할 것입니다.
from IPython.display import HTML, display
def display_table(data):
html = "<table>"
for row in data:
html += "<tr>"
for field in row:
html += "<td><h4>%s</h4><td>"%(field)
html += "</tr>"
html += "</table>"
display(HTML(html))
그리고 이렇게 사용하세요
data = [[1,2,3],[4,5,6],[7,8,9]]
display_table(data)
답변
다음 기능을 사용해 볼 수 있습니다.
def tableIt(data):
for lin in data:
print("+---"*len(lin)+"+")
for inlin in lin:
print("|",str(inlin),"", end="")
print("|")
print("+---"*len(lin)+"+")
data = [[1,2,3,2,3],[1,2,3,2,3],[1,2,3,2,3],[1,2,3,2,3]]
tableIt(data)
답변
좋아, 그래서 이것은 나보다 조금 더 어려웠다.
def print_matrix(list_of_list):
number_width = len(str(max([max(i) for i in list_of_list])))
cols = max(map(len, list_of_list))
output = '+'+('-'*(number_width+2)+'+')*cols + '\n'
for row in list_of_list:
for column in row:
output += '|' + ' {:^{width}d} '.format(column, width = number_width)
output+='|\n+'+('-'*(number_width+2)+'+')*cols + '\n'
return output
이것은 다양한 수의 행, 열 및 자릿수 (숫자)에서 작동합니다.
data = [[1,2,30],
[4,23125,6],
[7,8,999],
]
print print_matrix(data)
>>>>+-------+-------+-------+
| 1 | 2 | 30 |
+-------+-------+-------+
| 4 | 23125 | 6 |
+-------+-------+-------+
| 7 | 8 | 999 |
+-------+-------+-------+