首页 > 解决方案 > 从外部文件读入 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 文件。

标签: python

解决方案


至于从文件中读取内容 - 这很容易。假设您在保存脚本的同一文件夹中有文件“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多次生成和更改变量,但只保存最后一次迭代。看起来很奇怪。也许它应该缩进。但这只是一个猜测。


推荐阅读