Can a Jupyter / IPython notebook take arguments in the URL?

时光总嘲笑我的痴心妄想 提交于 2019-11-29 02:52:16

问题


Is it possible to write an Jupyter notebook such that parameters can be passed in via the URL of the notebook?

Example, for a URL such as this:

http://jupyter.example.com/user/me/notebooks/notebook1.ipynb?Variable1=Value1&Variable2=Value2

how could access Variable1 and Variable2 inside the Jupyter cell?


回答1:


You need to find out the URL using JavaScript and pass it to the IPython kernel:

from IPython.display import HTML
HTML('''
    <script type="text/javascript">
        IPython.notebook.kernel.execute("URL = '" + window.location + "'")
    </script>''')

or:

%%javascript
IPython.notebook.kernel.execute("URL = '" + window.location + "'");

Then in the next cell:

print(URL)

After this you can use the tools in the standard library (or plain string operations) to pull out the query parameters.




回答2:


You just need to take the values with javascript and push them to the ipython kernel like in the John Schmitt's link.

Cell [1]:

%%javascript
function getQueryStringValue (key)
{  
    return unescape(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + escape(key).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));
}
IPython.notebook.kernel.execute("Var1='".concat(getQueryStringValue("Variable1")).concat("'"));
IPython.notebook.kernel.execute("Var2='".concat(getQueryStringValue("Variable2")).concat("'")); 

And in another cell you can retrieve the python variables named Var1 and Var2:

>>>print Var1
Value1

And:

>>>print Var2
Value2


来源:https://stackoverflow.com/questions/31818127/can-a-jupyter-ipython-notebook-take-arguments-in-the-url

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!