2015-08-04 15 views
6

Bir Jupyter not defteri, parametrelerin not defterine iletilebilmesi için yazılabilir mi?Bir Jupyter/IPython not defteri URL'de argüman alabilir mi?

Örnek, bunun gibi bir URL için:

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

nasıl Jupyter hücre içinde Variable1 ve Variable2 erişebilir?

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

ya: Sonra

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

sonraki hücrede:

print(URL) 

cevap

7

Sen JavaScript kullanarak URL'yi öğrenmek ve ipython çekirdeğe geçmek gerekir Bundan sonra, sorgu parametrelerini çıkarmak için standart kitaplıktaki (veya düz dize işlemleri) araçları kullanabilirsiniz.

+0

Ben bu soruyu işaretlenmiş denedim önce denedim. Çalışmasını sağlamak için uğraşıyorum. Http://stackoverflow.com/q/37172978/1698426 adresine bakın. –

+0

Ek bir çifte fiyat teklifi ile çalıştım: IPython.notebook.kernel.execute ("URL = '" + window.location + "'"); – jdregister

+0

@jdregister Düzeltme için teşekkürler. – akaihola

2

Değerleri javascript ile almanız ve John Schmitt'in bağlantısında olduğu gibi ipython çekirdeğine göndermeniz yeterlidir.

Hücre [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("'")); 

Ve başka hücrede sen Var1 ve var2 adlı piton değişkenleri alabilirsiniz:

>>>print Var1 
Value1 

Ve:

>>>print Var2 
Value2 
İlgili konular