python - 从外部文件读入 Python 代码/正则表达式
问题描述
我有一段 Python (Sigil) 代码:
for (id, href) in bk.text_iter():
html = bk.readfile(id)
html = re.sub(r'<title></title>', '<title>Mara’s Tale</title>', html)
html = re.sub(r'<p>Mara’s Tale</p>', '<p class="title">Mara’s Tale</p>',html)
bk.writefile(id, html)
理想情况下,我想从外部文本文件中读取正则表达式(或者只是读取该代码块)。有什么建议么?我在 Perl 中做过类似的尝试,但我是 Python 新手。
另外,快速补充问题 - bk.writefile不应该缩进吗?如果是这样,为什么我的代码有效?它看起来好像在for块之外,因此只会写入最终文件,如果是(它是一个 epub,所以有几个 html 文件),但它正在更新所有相关文件。
关于bk,我的理解是这个对象是整个 epub,这段代码正在做的是通过 text_iter 读取组成 epub 的每个 html 文件,所以id是每个单独的文件。
编辑添加
啊! 那 bk.writefile 确实应该缩进。我侥幸成功,因为在我运行这段代码时,我只有一个 html 文件。
解决方案
至于从文件中读取内容 - 这很容易。假设您在保存脚本的同一文件夹中有文件“my_file.txt”:
f = open('my_file.txt', 'r')
content = f.read() # read all content of the file in the sting 'content'
lines = f.read().splitlines() # read lines of the file in array 'lines'
f.close()
print(lines[0]) # first line
print(lines[1]) # second line
# etc
至于不bk.writefile
应该缩进吗?是的,似乎循环html
多次生成和更改变量,但只保存最后一次迭代。看起来很奇怪。也许它应该缩进。但这只是一个猜测。
推荐阅读
- sql-server - 具有自定义值的数据透视表
- vb.net - 获取 PC 用户名/磁盘并使用它来删除文件/文件夹
- python-3.x - 为 CLI 脚本构建 python 包
- javascript - 获取两个字符串javascript之间最长的完美匹配
- django - 如何选择正确的序列化程序取决于特定领域?例如类型
- prometheus - 为什么我的 PromQL 查询没有在 Grafana 中合并
- azure - 如何使用单个存储过程捕获管道中多个活动(3)中每个活动的错误消息
- python - Python ast:确定 FunctionDef 是否在 ClassDef 中
- javascript - React Native:如何在一段时间后获取,比如 24 小时?
- java - 动态调整 Android Studio TextView 的大小