python - 使用 Python File IO 在 HTML 文件的特定位置添加文本
问题描述
我目前有一个 HTML 文件,其中包含在单击时运行脚本的单词。我想要在点击时做的是在行中插入一些文本。下面是我想要发生的事情的一个例子。
我想从这个...
<!DOCTYPE html>
<html>
<body>
<p>
A whole bunch of words yada yada yada
<a href="#" onclick="pythonScript(/wiki/Mercury_poisoning)" title="Mercury poisoning">
mercury poisoning
</a>
more words yada yada yada
</p>
</body>
</html>
对此...
<!DOCTYPE html>
<html>
<body>
<p>
A whole bunch of words yada yada yada
<a href="#" onclick="pythonScript(/wiki/Mercury_poisoning)" title="Mercury poisoning">
mercury poisoning
</a>
</p>
<p> Text that comes from pythonScript
</p>
<p>
more words yada yada yada
</p>
</body>
</html>
请注意,来自 python 脚本的文本已经是 html 格式。我将如何使用 Python File IO 做到这一点?如果使用其他工具更容易,那么解决这个问题最简单的工具是什么?
我尝试使用 write 功能,但覆盖了整个文件。然后我尝试以附加模式编写,但仍然没有将文本放在我想要的位置。我的第三个想法是以 r+ 模式打开文件并阅读直到我单击的单词,但我不知道如何确保程序将到达正确的字符串,而不是字符串的第一个实例。
解决方案
如果您只想使用 Python 标准库来执行此操作,则以下代码片段应该可以工作。
initial_code = '''
<!DOCTYPE html>
<html>
<body>
<p>
A whole bunch of words yada yada yada
<a href="#" onclick="pythonScript(/wiki/Mercury_poisoning)" title="Mercury poisoning">
mercury poisoning
</a>
more words yada yada yada
</p>
</body>
</html>
'''
additional_code = '''
<p> Text that comes from pythonScript
</p>
'''
elements = initial_code.split("more words yada yada yada")
new_file = elements[0] + additional_code + elements [1]
但是,这不是一个很好的通用解决方案。根据您希望脚本执行的操作,使用Jinja2等模板库构建 HTML 页面可能更合适。Miguel Grinberg 有一个关于在 Flask 应用程序中使用 Jinja2 的精彩教程,并介绍了模板的概念。
推荐阅读
- go - Creating a Job with Kubernetes client-go
- azure - 是否可以增加 VM 可以拥有的磁盘数量?
- python - Collisions aren't registering with Python Turtles
- java - 无法在 Helm 图表中获取 ZIP 文件
- matlab - How to change a tunable parameter with a Matlab function when using Simulink Coder (or accept input from multiple sources)?
- java - Java Servlet 过滤器未正确进入 doFilter 方法
- android - 使用应用程序时不要调用推送通知(在前台运行)
- firebase - Flutter cloud_firestore 系统日期对象的设置/警告
- java - 元素有时是可点击的
- asterisk - Asterisk ConfBridge 禁用会议中的所有声音 (BabyMonitor)