2017-01-30 19 views
0

REPRO:панды dataframe визуализируется как HTML показывает вверх причудливо (с буквальным тегов) при включении в Джекил сайт

  1. Create a new jekyll site
  2. Создать записную книжку IPython, test.ipynb, со следующим содержанием и запустить его :

    import pandas as pd  
    df = pd.DataFrame([[4,5]], columns=['A', 'B']) 
    df 
    
  3. Run jupyter nbconvert --to html --template basic test.ipynb

  4. Скопируйте test.html файл, созданный в предыдущем шаге, в каталог _includes под корень сайта Джекил
  5. Редактирование файла по умолчанию welcome-to-jekyll.markdown под _posts добавить строку: {% include test.html %}
  6. Run jekyll serve и перейти к образцу пост

Я ожидаю увидеть табличное представление моего фреймворка, как это показано в моем ноутбуке iPython. То, что я на самом деле получаю, - это беспорядок, когда некоторые теги интерпретируются соответствующим образом, а некоторые просто отображаются как текст. Это выглядит примерно так:

<th id="T_6c043882_e6d3_11e6_badf_889ffafd94e7" class="row_heading level0 row0" rowspan=1> 0 
<th class="col_heading level0 col0" colspan=1> A <th class="col_heading level0 col1" colspan=1> B 
4 5 

ответ

1

Проблема с атрибутами, такими как colspan=1 порожденных панд. Цитирование значений атрибутов необязательно в HTML5, но not in XHTML.

kramdown, анализатор по умолчанию, используемый в jekyll, поддерживает только действительный XHTML.

Лучшее исправление, которое я нашел, это нормализовать HTML-код в ноутбуке. т.е. заменить линию только df выше что-то вроде ...

import IPython.core.display as di 
from BeautifulSoup import BeautifulSoup as BS 
def sanitize_style(s): 
    soup = BS(s.render()) 
    return soup.prettify() 

di.display(di.HTML(sanitize_style(df.style))) 

Hat наконечник this answer для идеи использования BeautifulSoup нормализовать HTML. Помимо обнуления значений без кавычек, он также делает такие вещи, как закрытие закрытых тегов, что не является проблемой в минимальном примере выше, но может вызвать проблемы с более сложными примерами.

Если вы собираетесь отображать множество таких таблиц, возможно, стоит продолжить нормализацию вниз по течению с помощью настраиваемого конфигурационного файла nbconvert, поэтому вам не нужно повторять много шаблонов в коде ноутбука ,

Вы также можете попробовать переключение с kramdown парсер redcarpet (изменить линию markdown: kramdown к markdown: redcarpet в _config.yml, и добавить к вашему gem 'redcarpet' Gemfile). Это фиксировало мои проблемы XHTML, но ввело некоторые несвязанные причуды. Также обратите внимание, что as of May 2016, Github-pages will only support kramdown.

 Смежные вопросы

  • Нет связанных вопросов^_^