如何将 iPython HTML class 发送到 .html 文件?
How to send iPython HTML class to a .html file?
我有一个对象 class 'IPython.core.display.HTML
,我正在尝试将其保存为 .html
文件。我该怎么做?
def HTML_with_style(df, style=None, random_id=None):
#
from IPython.display import HTML
import numpy as np
import re
df_html = df.to_html()
if random_id is None:
random_id = 'id%d' % np.random.choice(np.arange(1000000))
if style is None:
style = """
<style>
table#{random_id} {{color: blue}}
</style>
""".format(random_id=random_id)
else:
new_style = []
s = re.sub(r'</?style>', '', style).strip()
for line in s.split('\n'):
line = line.strip()
if not re.match(r'^table', line):
line = re.sub(r'^', 'table ', line)
new_style.append(line)
new_style = ['<style>'] + new_style + ['</style>']
style = re.sub(r'table(#\S+)?', 'table#%s' % random_id, '\n'.join(new_style))
df_html = re.sub(r'<table', r'<table id=%s ' % random_id, df_html)
return HTML(style + df_html)
new_df = HTML_with_style(df) # df is a Pandas DataFrame
f = open("test.html", 'w')
f.write(display(new_df))
但是我明白了
TypeError: write() argument must be str, not None
编辑:注意,我不是使用IPython/Jupyter。我只是想在我的 HTML 文件中添加一些 CSS,然后发现 HTML_with_style
post。如果这是完全错误的解决方法,请告诉我。
看来你可以替换
return HTML(style + df_html)
和
return style + df_html
并执行以下操作:
with open('/path/to/file.html', 'w') as f:
f.write(HTML_with_style(df))
但是,也许您应该研究 https://pandas.pydata.org/pandas-docs/stable/style.html 以获得更复杂的样式。
我用我的修正测试了你的功能,保存了一个测试数据框,它在我的浏览器中显示为蓝色 table,我认为它应该如下所示:
我有一个对象 class 'IPython.core.display.HTML
,我正在尝试将其保存为 .html
文件。我该怎么做?
def HTML_with_style(df, style=None, random_id=None):
#
from IPython.display import HTML
import numpy as np
import re
df_html = df.to_html()
if random_id is None:
random_id = 'id%d' % np.random.choice(np.arange(1000000))
if style is None:
style = """
<style>
table#{random_id} {{color: blue}}
</style>
""".format(random_id=random_id)
else:
new_style = []
s = re.sub(r'</?style>', '', style).strip()
for line in s.split('\n'):
line = line.strip()
if not re.match(r'^table', line):
line = re.sub(r'^', 'table ', line)
new_style.append(line)
new_style = ['<style>'] + new_style + ['</style>']
style = re.sub(r'table(#\S+)?', 'table#%s' % random_id, '\n'.join(new_style))
df_html = re.sub(r'<table', r'<table id=%s ' % random_id, df_html)
return HTML(style + df_html)
new_df = HTML_with_style(df) # df is a Pandas DataFrame
f = open("test.html", 'w')
f.write(display(new_df))
但是我明白了
TypeError: write() argument must be str, not None
编辑:注意,我不是使用IPython/Jupyter。我只是想在我的 HTML 文件中添加一些 CSS,然后发现 HTML_with_style
post。如果这是完全错误的解决方法,请告诉我。
看来你可以替换
return HTML(style + df_html)
和
return style + df_html
并执行以下操作:
with open('/path/to/file.html', 'w') as f:
f.write(HTML_with_style(df))
但是,也许您应该研究 https://pandas.pydata.org/pandas-docs/stable/style.html 以获得更复杂的样式。
我用我的修正测试了你的功能,保存了一个测试数据框,它在我的浏览器中显示为蓝色 table,我认为它应该如下所示: