주피터 노트북에서 마크다운 출력을 프로그래밍 방식으로 생성하는 방법은 무엇입니까?
저는 주피터 노트에 수업 보고서를 쓰고 싶습니다.저는 몇 가지를 세고, 몇 가지 결과를 생성하여 가격 인하에 포함시키고 싶습니다.셀 출력을 마크다운으로 해석하도록 설정할 수 있습니까?
다음과 같은 명령이 필요합니다.print '$\phi$'
마크다운에서처럼 파이 기호를 생성합니다.
즉, 저는 마크다운 방식으로 템플릿을 만들고 노트북에 프로그램에서 생성된 값을 삽입하고 싶습니다.노트북을 다시 계산하면 새 결과가 생성되고 새 값이 삽입된 새 마크다운이 생성됩니다.이 소프트웨어로 가능한가요, 아니면 직접 값을 교체해야 하나요?
원하는 기능은 IPython.display 모듈에 있습니다.
from IPython.display import display, Markdown, Latex
display(Markdown('*some markdown* $\phi$'))
# If you particularly want to display maths, this is more direct:
display(Latex('\phi'))
당신은 기본적으로 두 가지 다른 것을 요구하고 있습니다.
코드 결과를 출력하는 셀을 표시합니다.
몇 가지 항목을 세고, 몇 가지 결과를 생성하여 마크다운에 포함시키고 싶습니다. [...] 템플릿을 마크다운으로 만들고 프로그램에서 생성한 값을 노트북에 삽입하고 싶습니다.
마크다운을 출력하는 코드 셀
다음과 같은 명령이 필요합니다.
print '$\phi$'
마크다운에서처럼 파이 기호를 생성합니다.
2.는 이미 다른 답변에 포함되어 있으므로(기본적으로: 사용)Latex()
또는Markdown()
에서 가져온.IPython.display
), 첫 번째 항목에 중점을 두겠습니다.
삽입된 변수가 있는 템플릿 표시
주피터 확장 Python Markdown을 사용하면 실제로 사용자가 설명한 대로 정확히 수행할 수 있습니다.
설치 지침은 nbextensions의 github 페이지에서 확인할 수 있습니다.주피터 명령 또는 확장 구성자를 사용하여 파이썬 마크다운 확장을 사용하도록 설정해야 합니다.
확장 기능을 사용하면 변수에 액세스할 수 있습니다.{{var-name}}
이러한 마크다운 템플릿의 예는 다음과 같습니다.
마크다운 셀의 Python 코드
변수 a는 {{a}}입니다.
LateX: {{b}}도 여기에 넣을 수 있습니다!
이미지까지 포함 가능: {{i}}
자연스럽게 모든 변수 또는 이미지a
,b
,i
이전 코드에서 설정해야 합니다.그리고 물론 Markdown-Latex 스타일의 표현을 사용할 수도 있습니다(예:$\phi$
print 명령을 사용하지 않습니다.이 이미지는 확장의 Wiki에서 가져온 것으로, 기능을 보여줍니다.
ipython/jupyter에 통합되는 이 기능에 대한 자세한 내용은 ipython 및 jupyter에 대한 문제 추적기에서 설명합니다.
토마스의 대답에 덧붙여. 또 은 마다운마을렌는또하다같다습니음과다방법을 사용하는 것입니다.display_markdown
에서 합니다.IPython.display
모듈:
from IPython.display import display_markdown
display_markdown('''## heading
- ordered
- list
The table below:
| id |value|
|:---|----:|
| a | 1 |
| b | 2 |
''', raw=True)
아래 출력:
사용 예는 Google Colab 노트북에서 찾을 수 있습니다.
또 다른 옵션은 마크다운 렌더링에는 리치를 사용하고 기호에는 유니코드It를 사용하는 것입니다.예를 들어 Rich는 테이블을 지원하지 않는 CommonMark를 사용하기 때문에 몇 가지 제한이 있습니다.그러나 리치에는 테이블을 렌더링하는 다른 방법이 있습니다. 자세한 내용은 설명서에 나와 있습니다.
다음은 예입니다.
from rich.markdown import Markdown
import unicodeit
alpha = unicodeit.replace('\\alpha')
epsilon = unicodeit.replace('\\epsilon')
phi = unicodeit.replace('\\phi')
MARKDOWN = f"""
# This is an h1
Rich can do a pretty *decent* job of rendering markdown.
1. This is a list item
2. This is another list item
## This is an h2
List of **symbols**:
- alpha: {alpha}
- epsilon: {epsilon}
- phi: {phi}
This is a `code` snippet:
```py
# Hello world
print('Hello world')
```
This is a blockquote:
> Rich uses [CommonMark](https://commonmark.org/) to parse Markdown.
---
### This is an h3
See [Rich](https://github.com/Textualize/rich) and [UnicodeIt](https://github.com/svenkreiss/unicodeit) for more information.
"""
Markdown(MARKDOWN)
다음과 같은 출력을 생성합니다.
from tabulate import tabulate
from IPython.display import Markdown
A2 = {
'Variable':['Bundle Diameter','Shell Diameter','Shell Side Cross Flow area','Volumetric Flowrate','Shell Side Velocity'],
'Result':[3.4, 34, 78.23, 1.0 , 2.0],
'Unit' : ['$in$', '$in$', '$ft^2$', '$ft^{3}s^{-1}$', '$fts^{-1}$']}
temp_html=tabulate(A2, headers='keys', tablefmt='html')
Markdown(temp_html.replace('<table>','<table style="width:50%">'))
.replace()를 사용하면 라텍스 코드가 깨지지 않고 열이 과도하게 늘어나는 것을 방지할 수 있습니다.이 방법으로 라텍스로 테이블을 동적으로 생성할 수 있습니다.
옵션 하나 더.주피터 노트북을 웹 앱으로 변환하기 위한 오픈 소스 프레임워크가 있습니다.그것은 수성이라고 불립니다.라는 기능을 가지고 있습니다.Markdown
모든 문자열을 마크다운으로 표시합니다.여기 설명서가 있습니다.
다음은 마크다운을 동적으로 표시하는 노트북의 예입니다.
import mercury as mr
slider = mr.Slider(label="Favorite number", value=5)
name = "Piotr"
mr.Markdown(f"""# Hello {name}
## Your variable is {slider.value}
""")
머큐리로 만든 노트북과 웹 앱.동적 마크다운이 있습니다.
노트북의 표준 마크다운 렌더러를 mystjs 렌더러로 바꿀 jupyterlab-myst라는 흥미로운 연구실 확장이 있습니다.
즉, 변수 값을 마크다운으로 직접 보간할 수 있는 것을 포함하여 마크다운 셀에서 표준 이상의 공통 마크다운을 렌더링할 수 있습니다.이것들은 간단한 변수, 이미지, 셀 출력, 심지어 ipy 위젯일 수 있습니다.
이를 통해 코드 셀의 계산 결과와 노트북의 마크다운 콘텐츠를 결합하는 방법에 대해 훨씬 더 많은 가능성이 열립니다.노트북이 다시 실행되면 마크다운의 보간된 값이 업데이트됩니다.
OP의 사용 사례에도 도움이 될 수 있는 보고서 작성에 도움이 되는 다른 기능이 있습니다.
언급URL : https://stackoverflow.com/questions/36288670/how-to-programmatically-generate-markdown-output-in-jupyter-notebooks
'programing' 카테고리의 다른 글
각도 형식(반응성이 아님)의 데이터가 변경되었는지 감지 (0) | 2023.07.18 |
---|---|
PDB 중단점을 파이썬 코드에 넣는 더 간단한 방법은 무엇입니까? (0) | 2023.07.18 |
Python, 기본 인증을 사용하는 HTTPS GET (0) | 2023.07.13 |
SQL/JPA에서 각 ID에 대한 특정 타임스탬프 범위로 필터링하는 ID 목록에 대한 데이터를 선택하려고 합니다. (0) | 2023.07.13 |
SQL Server에서 ID 열 값이 갑자기 1001로 껑충 뛰었습니다. (0) | 2023.07.13 |