Tôi đã chuyển đổi sổ ghi chép IPython sang định dạng HTML và sau đó mất tệp ipynb gốc.Máy tính xách tay IPython: Chuyển đổi sổ ghi chép HTML sang ipynb
Có cách nào đơn giản để tạo tệp sổ ghi chép gốc từ tệp HTML được chuyển đổi không?
Tôi đã chuyển đổi sổ ghi chép IPython sang định dạng HTML và sau đó mất tệp ipynb gốc.Máy tính xách tay IPython: Chuyển đổi sổ ghi chép HTML sang ipynb
Có cách nào đơn giản để tạo tệp sổ ghi chép gốc từ tệp HTML được chuyển đổi không?
Gần đây tôi đã sử dụng BeautifulSoup và JSON để chuyển đổi sổ ghi chép html thành ipynb. Bí quyết là xem xét lược đồ JSON của một sổ ghi chép và mô phỏng nó. Mã này chọn các tế bào chỉ nhập mã và các tế bào markdown
đây là mã của tôi
from bs4 import BeautifulSoup
import json
import urllib.request
url = 'http://nbviewer.jupyter.org/url/jakevdp.github.com/downloads/notebooks/XKCD_plots.ipynb'
response = urllib.request.urlopen(url)
# for local html file
# response = open("/Users/note/jupyter/notebook.html")
text = response.read()
soup = BeautifulSoup(text, 'lxml')
# see some of the html
print(soup.div)
dictionary = {'nbformat': 4, 'nbformat_minor': 1, 'cells': [], 'metadata': {}}
for d in soup.findAll("div"):
if 'class' in d.attrs.keys():
for clas in d.attrs["class"]:
if clas in ["text_cell_render", "input_area"]:
# code cell
if clas == "input_area":
cell = {}
cell['metadata'] = {}
cell['outputs'] = []
cell['source'] = [d.get_text()]
cell['execution_count'] = None
cell['cell_type'] = 'code'
dictionary['cells'].append(cell)
else:
cell = {}
cell['metadata'] = {}
cell['source'] = [d.decode_contents()]
cell['cell_type'] = 'markdown'
dictionary['cells'].append(cell)
open('notebook.ipynb', 'w').write(json.dumps(dictionary))
đây là một phần của print(soup.div)
đầu ra
div class="container">
<div class="navbar-header">
<button class="navbar-toggle collapsed" data-target=".navbar-collapse" data-toggle="collapse" type="button">
<span class="sr-only">Toggle navigation</span>
<i class="fa fa-bars"></i>
</button>
<a class="navbar-brand" href="/">
<img src="/static/img/nav_logo.svg?v=479cefe8d932fb14a67b93911b97d70f" width="159"/>
</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-right">
<li>
<a class="active" href="http://jupyter.org">JUPYTER</a>
</li>
<li>
<a href="/faq" title="FAQ">
<span>FAQ</span>
Một ảnh chụp màn hình của kết quả file ipynb, nạp trên của tôi jupyter cục bộ và sau khi chạy tất cả các ô
Tuyệt vời. Cám ơn vì đã chia sẻ. – foglerit
Sao chép mã từ tệp html vào sổ ghi chép mới không phải là tùy chọn cho bạn? Tôi đoán đây là một vấn đề khá bất thường và tôi nghi ngờ rằng có một cách dễ dàng để làm điều đó. – cel
@cel, vâng, đó là một lựa chọn, không thực sự khủng khiếp cho máy tính xách tay lớn. Nhưng kể từ khi tập tin JSON ipynb và HTML chuyển đổi có nhiều hơn hoặc ít hơn cùng một thông tin, tôi đã tự hỏi nếu có thể có một công cụ chuyển đổi có sẵn. – foglerit
Tôi không tin rằng có sẵn công cụ chuyển đổi có sẵn. –