【问题标题】:concatenate string and number using jinja2 in python在python中使用jinja2连接字符串和数字
【发布时间】:2013-07-24 11:24:10
【问题描述】:

在我的 python 脚本中连接字符串和数字,现在我使用 string.format() 如下,我如何使用 jinja2 一样。

for item in mylist:
        mystr = '{}{}{}'.format(item['name'] + ' ;' + 
                ' ' + str(item['age'])+ ' ;'  if item.get('age') else ';',
                ' ' + item['email']+ ' ;' if item.get('email') else ';'                        
                )

mystr 的一些示例输出是

 1. abc ; 25 ; abc@gmail.com
 2. cdf ;;;

我想在我的 python 脚本中使用 jinja2 来格式化字符串。我该怎么做。提前致谢。

【问题讨论】:

  • 这不能回答你的问题,但你可以简化你的字符串mystr = ';'.join((item.get('name',''),str(item.get('age','')),item.get('email','')))

标签: python python-2.7 jinja2


【解决方案1】:

你可以这样做:

{{ item['name'] }};{{ item['age'] }};{{ item['email'] }};

这是因为在 Jinja2 中,如果某些内容未定义,Jinja2 将插入“nothing”。

我随意忽略了您的空间分布。如果需要空格,可以使用 Jinja2 的if-expressions

{{ "%s ;" % item['email'] if item['email'] is defined else ";" }}

【讨论】:

  • 我正在开发一个python项目而不是django模板。那么怎么办?
  • Jisson,在你的问题中你说“我想使用 jinja2”。我向您展示的内容是针对 Jinja2 的。 Jinja2 与 Django 的模板非常相似,可能这就是它熟悉的原因,但它与 django 并不完全相同。
  • 我对 jinja 完全陌生,如何在 python 代码中使用 {{ }}?这是语法错误,还是我必须使用 jinja2.somemethod({{}})?
  • 胡?如果您想在 python 代码中执行此操作,请使用您的示例代码。或者如果你真的问如何从 python 调用 jinja2,那么看看 jinja.pocoo.org/docs/api/#basics ... 也看看 from_string()。
【解决方案2】:

从 jinja2 导入模板

template = Template(
            "{{ name }} ;"
            "{{ ' 'if age }}{{age if age }}{{' 'if age}};"
            "{{ ' ' if email}};{{ email if email}}{{ ' ' if email}};")

for item in mylist:
    people_tag =template.render(
                    name= item['name'],
                    age = item.get('age'),
                    email= item.get('email'))

o/p

abc ; 25; abc@gmail.com;

xyz;;;

【讨论】:

    猜你喜欢
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 2011-10-22
    • 2021-11-30
    相关资源
    最近更新 更多