2016-08-21 3 views
0

Jupyter 노트북에 보고서를 작성하고 있습니다. 데이터 시각화 외에도 다양한 텍스트 색상과 서식, 각주 등 Google 문서에서 멋지게 형식화 된 문서를 가지고 있습니다. 문서의 일부분을 노트북 전체에 산발적으로 포함 시키므로 Google 문서를 나는 특정 노트북 세포에서, HTML 등의 각 부분을 다운로드 렌더링하려면, 지금Jupyter Notebook : 한 셀에서 렌더링 된 HTML이 다른 셀에서 렌더링 된 HTML을 엉망으로 만듭니다.

IPython.display.HTML(""" [html string] """)

와 노트북에 포함하기 위해이 같은 HTML 렌더링하려고 처음 시도하고, 그것을 잘 보인다. 그러나 별도의 셀에 두 번째 HTML을 렌더링하자마자 은 임의의 공백 및 흐리게 처리 된 텍스트 톤이 제대로 렌더링되지 않을뿐만 아니라 이전에 정상적으로 처리 된 렌더링 된 HTML의 초기 셀을 엉망으로 만듭니다 . 한 셀의 출력이 다른 셀의 출력을 변경하는 이유는 무엇입니까? 그리고이 문제를 완화하기 위해 무엇을 할 수 있습니까? 나는 다음 두 번째 전지의 출력, 완벽한 형식에 대한 첫 번째 반환의 출력을 취소 한 경우, 위의 ipython.display.HTML 각 명령을 실행 한 후

#setup 
import pandas as pd 
import numpy as np 
import math 
import matplotlib.pyplot as plt 
pd.set_option('display.max_columns', 500) 
pd.set_option('display.max_rows', 10000) 
from bokeh.charts.operations import blend 
from bokeh.charts import Bar, Donut, show 
from bokeh.io import output_notebook 
from bokeh.charts.attributes import CatAttr 
from bokeh.models import HoverTool 
import folium 
output_notebook() 
import IPython as ipython 
import IPython.core.display as di 

# This line will hide code by default when the notebook is exported as HTML 
di.display_html('<script>jQuery(function() {if (jQuery("body.notebook_app").length == 0) { jQuery(".input_area").toggle(); jQuery(".prompt").toggle();}});</script>', raw=True) 

ipython.display.HTML("""<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><style type="text/css">ol{margin:0;padding:0}table td,table th{padding:0}.c8{background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt}.c4{font-size:12pt;color:#cc0000;font-weight:700}.c6{orphans:2;widows:2;height:11pt}.c5{line-height:1.0;orphans:2;widows:2}.c10{orphans:2;widows:2}.c0{color:inherit;text-decoration:inherit}.c9{color:#1155cc;text-decoration:underline}.c1{color:#4c515a;font-size:12pt}.c3{width:33%;height:1px}.c7{font-weight:700}.c2{font-size:10pt}.title{padding-top:0pt;color:#000000;font-size:26pt;padding-bottom:3pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}.subtitle{padding-top:0pt;color:#666666;font-size:15pt;padding-bottom:16pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}li{color:#000000;font-size:11pt;font-family:"Arial"}p{margin:0;color:#000000;font-size:11pt;font-family:"Arial"}h1{padding-top:20pt;color:#000000;font-size:20pt;padding-bottom:6pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h2{padding-top:18pt;color:#000000;font-size:16pt;padding-bottom:6pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h3{padding-top:16pt;color:#434343;font-size:14pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h4{padding-top:14pt;color:#666666;font-size:12pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h5{padding-top:12pt;color:#666666;font-size:11pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h6{padding-top:12pt;color:#666666;font-size:11pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;font-style:italic;orphans:2;widows:2;text-align:left}</style></head><body class="c8"><p class="c10"><span class="c4">SEX AND AGE DISAGGREGATION</span><sup class="c4"><a href="#ftnt1" id="ftnt_ref1">[1]</a></sup></p><p class="c10"><span class="c1">Across the response, the largest age </span><span class="c1">brackets</span><span class="c1">&nbsp;were, understandably </span><span class="c1 c7">18-59 </span><span class="c1">and </span><span class="c1 c7">5-17</span><sup class="c1 c7"><a href="#ftnt2" id="ftnt_ref2">[2]</a></sup><span class="c1">&nbsp;- not surprising, as these are also the widest age </span><span class="c1">brackets</span><span class="c1">. </span></p><p class="c6"><span></span></p><hr class="c3"><div><p class="c5"><a href="#ftnt_ref1" id="ftnt1">[1]</a><span class="c2">&nbsp;</span><span class="c2">Further breakdown of SADD and </span><span class="c2">country of origin</span><span class="c2">&nbsp;data by district/camp within Turkey, Greece or the Balkans is also available. </span><span class="c1">&nbsp;</span></p></div><div><p class="c5"><a href="#ftnt_ref2" id="ftnt2">[2]</a><span class="c2">&nbsp;The range of the current age brackets being used (i.e. the 18-59 brackets) significantly reduces the usefulness of age in analyzing disaggregated data. Greater insights could be gathered around the age-based needs of populations served by Mercy Corps if age were collected using</span><span class="c2">&nbsp;</span><span class="c2 c9"><a class="c0" href="https://www.google.com/url?q=https://thedig.mercycorps.org/page/21&amp;sa=D&amp;ust=1471779169512000&amp;usg=AFQjCNGe-EGnyFOFGO8Kg7MJ0ibxA6YYzw">Mercy Corps&rsquo; recommended age brackets</a></span><span class="c2">, or preferably, collecting the exact age of household members as well as that of registered individuals. </span></p></div></body></html>""") 


ipython.display.HTML("""<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><style type="text/css">ol{margin:0;padding:0}table td,table th{padding:0}.c1{background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt}.c2{orphans:2;widows:2}.c0{color:#4c515a;font-size:12pt}.title{padding-top:0pt;color:#000000;font-size:26pt;padding-bottom:3pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}.subtitle{padding-top:0pt;color:#666666;font-size:15pt;padding-bottom:16pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}li{color:#000000;font-size:11pt;font-family:"Arial"}p{margin:0;color:#000000;font-size:11pt;font-family:"Arial"}h1{padding-top:20pt;color:#000000;font-size:20pt;padding-bottom:6pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h2{padding-top:18pt;color:#000000;font-size:16pt;padding-bottom:6pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h3{padding-top:16pt;color:#434343;font-size:14pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h4{padding-top:14pt;color:#666666;font-size:12pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h5{padding-top:12pt;color:#666666;font-size:11pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h6{padding-top:12pt;color:#666666;font-size:11pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;font-style:italic;orphans:2;widows:2;text-align:left}</style></head><body class="c1"><p class="c2"><span class="c0">The beneficiary population in Izmir, Turkey is a relatively even split between female/male, with a slightly higher female </span><span class="c0">population</span><span class="c0">. </span></p></body></html>""") 

.

+0

동일한 대상에 대해 두 번 스타일을 삽입하므로 마지막으로 남아 있습니다. 또한,'와 같은 한 번만 두 번 elemtens를 삽입하고 있습니다.'ipython.display.HTML'이 이것을 처리하는지, 만약 그렇지 않다면 브라우저에 달렸는지, 어떻게 처리해야하는지 모르겠습니다. 나쁜 문서. 그들이 iframe 일 수도 있습니까? –

+0

iframe이 필요한 것 같습니다. 그 일을하는 방법에 대한 조언? 'ipython.display.HTML'에 대한 호출을'ipython.display.IFrame' 호출로 바꾸려고 시도했지만 출력 결과가 404 오류를 보여줍니다. –

+0

[여기] (http://superuser.com/questions/764641/how-to-serve-html-off-my-dropbox/931469#)에 설명 된 것처럼 Dropbox에서 HTML 파일을 제공하여 제대로 작동 할 수있었습니다. 931469). 그러나 또 다른 이상한 문제가 생겨났습니다. 이제는 노트북에 IFrame을 포함 시켰기 때문에 코드 셀을 숨기고 HTML로 다운로드 할 때 더 이상 작동하지 않는 것으로 보이는 스크립트를 사용했습니다. –

답변

1

Google 문서 다운로드에서 생성 된 전체 HTML 문자열에 IPython.display.HTML 번을 여러 번 호출하여 한 문자열의 스타일이 다른 스타일의 스타일과 충돌하여 문제가 발생했습니다.

해결 방법은 IFrame을 사용하여 IPython.display.HTML로 전화를 바꾸고 IPython.display.IFrame을 호출하는 것입니다. 또한 단순히 Google 문서에서 다운로드 한 HTML 문자열을 포함하는 대신 HTML 문서를 웹 서버에서 호스팅하여 노트북에 올바르게 렌더링해야합니다. This post은 Dropbox를 사용하여 파일을 제공하는 멋진 솔루션을 제공합니다.

관련 문제