【问题标题】:How to embed Markdown in a python file used as a jupyter notebook in PyCharm如何在 PyCharm 中用作 jupyter notebook 的 python 文件中嵌入 Markdown
【发布时间】:2023-03-12 05:40:01
【问题描述】:

我更喜欢使用#%% 单元格分隔符直接在 python 中创建/编辑 jupyter 笔记本。 PyCharm 非常乐意以这种方式识别细胞。但是我们如何指定一个单元格是一个非python 特别是markdown

是否有类似于代码围栏的东西,例如

#%% {markdown}

或者是否有完全不同的结构可用于这种支持?

【问题讨论】:

  • 你试过#%% md 吗?
  • @vb_rises 我确实看到您对#%% md 的建议部分有效。您能否找到显示转换为 .ipynb 的整个过程的答案?我尝试了几个包,包括github.com/gatsoulis/py2ipynb,但它还没有工作。
  • 我想我将无法展示转换为.ipynb的整个过程。我想这主要是通过一些已经开发的包而已。当您可以轻松编写 .ipynb 时,为什么要这样做?另外,一个与这篇文章无关的问题,我看到你正在使用大数据堆栈(尤其是 spark),可以为它推荐一些学习路径。我对此非常感兴趣,但无法遵循任何路径。谢谢
  • @vb_rises 好的,我正在使用 jupytext 计算 e2e(请参阅下面的答案)。由于正确的软件工程实践,我更喜欢写.py 而不是.ipynb:保持python 模块化并且不会丢失在笔记本中。关于另一个主题:看起来您已经找到了我的一些spark 相关答案;)stackoverflow.com/search?q=user:1056563+[apache-spark]
  • 如果你会写 python,然后想把它转换成 ipynb,你会花更多的时间来解决语法问题,而不是直接在 ipynb 中编写业务/有用的代码。我已经看到了你的答案,但我在问一种学习路径(书籍、在线课程等),首先我可以清除基础知识,然后练习,然后在出现问题时查看答案。

标签: python jupyter-notebook markdown


【解决方案1】:

如果您使用三个单引号(或三个双引号),python 会将其间的所有内容解释为文字文本,包括回车符、空格,并忽略通常识别为特殊字符的内容。

因此,您可以通过这种方式将 Markdown 嵌入文件或脚本中...

s = '''
This line starts at the edge and has a carriage return
  This one starts two spaces in. 
  # This one has a hashtag, which is nŃOT seen as a comment. 
  https://thisIsJustTextNow.com
'''

print(s)

输出:

This line starts at the edge and has a carriage return
  This one starts two spaces in. 
  # This one has a hashtag, which is NOT seen as a comment. 
  https://thisIsJustTextNow.com

【讨论】:

  • 在被 ipython 转换时不会呈现为 markdown
  • @javadba 你是对的。也许我误解了你想要做什么。例如,如果你试图让 python 写出一个 Markdown 文件,这将是一种方法 - 而不会被 Markdown 语法弄糊涂。
  • 这里需要有一个python友好的源文件,可以通过单个命令转换为.ipynb。
【解决方案2】:

我认为jupytext 将成为可行的方法:似乎很受欢迎并受到支持。我仍然没有让它完美地工作,但它有更多的希望。

 pip3 install jupytext

 jupytext --to notebook   /git/prdnlp/python/readct.py

 jupyter-notebook /git/prdnlp/python/readct.ipynb

markdown 单元格表示为

#%% [markdown]

所以代码现在看起来像:

#%%
import pandas as pd
from pandasql import sqldf


#%% [markdown]

"""
## Clinical Trials Postgres queries

We are using data from [ClinicalTrials.gov](https://clinicaltrials.gov/ct2/results?term=recurrent&cond=Glioblastoma+Multiforme&age_v=&gndr=&type=&rslt=With&Search=Apply)

 - The data is synced to the AACT database daily
 - The conditions and interventions are identified within specific tables

"""
#%%
ct = pd.read_csv('~/Downloads/SearchResults.tsv',delimiter='\t')
ctIdsDf = sqldf("select `NCT Number` nct_id, * from ct order by 1")
ctIds = ctIdsDf['nct_id']

#%%

请注意,三引号仍然显示在输出中:所以我不清楚如何让它们被jupytext“剥离”出来:

【讨论】:

    【解决方案3】:

    您可以使用#%% md 标志。例如:

    #%% md 
    Normal Text
    

    其他格式包括:

    #%% md 
    # Title
    ## Heading 1
    ### Heading 3
    ### _Bold_
    ### *Italics* 
    

    【讨论】:

      猜你喜欢
      • 2020-01-15
      • 2018-07-26
      • 1970-01-01
      • 2019-07-28
      • 2023-03-26
      • 2020-10-18
      • 2021-09-16
      • 2016-10-04
      • 1970-01-01
      相关资源
      最近更新 更多