我有下面的代码从Pandas Dataframe 生成html。我使用JS访问每一行表,但得到一个错误。
File "<fstring>", line 2
var elem = array[i].cells[1].innerHTML;
^
SyntaxError: invalid syntax
def generate_html_main_page(dataframe: pd.DataFrame):
# get the table HTML from the dataframe
table_html = dataframe.to_html(table_id="table")
# construct the complete HTML with jQuery Data tables
html = f"""
<html>
<header>
<link href="https://cdn.datatables.net/1.11.5/css/jquery.dataTables.min.css" rel="stylesheet">
</header>
<body>
{table_html}
<script src="https://code.jquery.com/jquery-3.6.0.slim.min.js" integrity="sha256-u7e5khyithlIdTpu22PHhENmPcRdFiHRjhAuHcs05RI=" crossorigin="anonymous"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.11.5/js/jquery.dataTables.min.js"></script>
<script type="text/javascript">
var array = document.getElementById("table").rows
for (let i = 0; i < array.length; ++i) {
var elem = array[i].cells[1].innerHTML;
document.getElementById("table").rows[i].cells[1].innerHTML = "<a href='#test'>" + elem +"</a>"
document.write(document.getElementById("table").rows[i].cells[1].innerHTML)
}
</script>
</body>
</html>
"""
# return the html
return html
如有任何意见,不胜感激。谢谢!
1条答案
按热度按时间ttp71kqs1#
我们使用一个f字符串来生成HTML,但是HTML中还有
{
/}
字符,所以Python试图将JavaScriptfor
循环的主体作为Python代码来执行。当你希望它们只是文字大括号时,你可以将它们转义为
{{
/}}
,或者使用普通字符串连接(html = '''...''' + table_html + '''...'''
)。