包含带过滤的纯文本文件

0 投票
1 回答
777 浏览
提问于 2025-04-18 06:32

我们有一些文本文件,想把它们放进模板里,但这些文件里有很多我们想要过滤掉的杂乱内容。

假设过滤的标准大概是这样的:

with open(file) as f:
    data = f.read()
    result = re.findall('[^!]\s*(\w{4}[^pP]:[^\n]+\;)', data)

我之前见过这个例子:

在Jinja模板中直接插入静态文件,而不进行解析

import jinja2

def include_file(name):
    return jinja2.Markup(loader.get_source(env, name)[0])

loader = jinja2.PackageLoader(__name__, 'templates')
env = jinja2.Environment(loader=loader)
env.globals['include_file'] = include_file

def render():
    return env.get_template('page.html').render()

if __name__ == '__main__':
    print render()

我的问题是:在我的情况下,include_file函数里应该放些什么呢?

1 个回答

0

你应该有这样的东西...

def include_file(self, name):
    with open(file) as f:
        data = f.read()
        result = re.findall('[^!]\s*(\w{4}[^pP]:[^\n]+\;)', data)
    return jinja2.Markup(result)

env.globals['include_file'] = include_file

然后你的模板看起来会是这样的...

{{ include_file('file.txt') }}

这篇文章可以帮助你更好地理解全局变量。

http://modular.math.washington.edu/home/wstein/www/home/bjarke/sage-4.4.4/local/LIB/python/site-packages/Jinja-1.2-py2.6-linux-x86_64.egg/docs/html/objects.html

希望这对你有帮助!

撰写回答