我正在尝试格式化字符串内的文件路径,但它会不断添加额外的'\'。
template = "{%% extends 'base.html' %%}"\
"{%% block content %%}"\
" "\
"<h1>%s</h2>"\
" "\
"<p>%s</p> "\
"<p><img src= '%s'></p>"\
"{%% endblock %%}" %(title, text, img_path)
它会返回此信息。
<p><img src= \'myDirectory/scarlett Johanson/1448556501.89.jpg\'></p>{% endblock %}'}
我不希望字符串前面的字符串和字符串中的jpg之后。我试图将最后一个字符切出字符串,但它只删除g并在结尾处留下\。让我感到困惑的是它在'myDirectory之前放置\。
我正在使用
创建文件title = time.time()
file_path = os.path.join(BASE_PATH, '%s.jpg') % title
答案 0 :(得分:1)
您是否尝试过使用带字符串格式化程序的tripple引号?
template = """
{%% extends 'base.html' %%}
{%% block content %%}
<h1>{title}</h2>
<p>{text}</p>
<p><img src={img_path}></p>
{%% endblock %%}
""".format(title=title, text=text, img_path=img_path)
单引号不应用于html属性
尝试打印模板,看看你得到了什么
print(template)
答案 1 :(得分:0)
这样你就可以解决问题了。
当您将字符串表示形式打印到控制台时,它将返回引号。
所以print(repr('hello'))
会输出'hello'
如果字符串包含引号,即使未在之前转义,它也会被转义:
print(repr("'hello'"))
提供'\'hello\''
print(repr('\'hello\''))
给出'\'hello\''
print(repr("""'hello'"""))
提供'\'hello\''
由于您正在打印包含字符串的字典,因此该字符串将被输出引用。 print({'a', 'hello'})
提供{'a': 'hello'}
答案 2 :(得分:0)
我不知道它是否是最佳解决方案,但也许你可以在创建模板变量后使用它:
template=template.replace("\\'","'")
我相信在你的代码的某些其他部分,引用逃避的事情仍然存在......
答案 3 :(得分:0)
对不起,我不确定导致错误的原因。但是,处理它的一种方法是使用Drop
。我不熟悉你的模板渲染器(我只使用过jinja2),但它必须是这样的:
replace