首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jinja2:将字符串拆分为多个列表

Jinja2:将字符串拆分为多个列表
EN

Stack Overflow用户
提问于 2017-04-23 13:24:59
回答 3查看 4.7K关注 0票数 1

我想要一个输入字符串,例如

代码语言:javascript
运行
复制
"server1:port1,server2:port2,server3:port3"

并将其分成两份清单:

代码语言:javascript
运行
复制
servers = [ server1, server2, server3 ]
ports = [ port1, port2, port3 ]

这里有两个分隔符:首先它是",",然后元素本身被":“分割。

有什么快捷的方法吗?

另外,如何将"toString“列表中的任何一个变成portString="port1,port2,port3”之类的东西?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-24 10:49:47

如果要在jinja模板中执行此操作,则可以使用以下代码。

代码语言:javascript
运行
复制
    {% set server = [] %}
    {% set port = [] %}
    {% set x= "server1:port1,server2:port2,server3:port3" %}
    {% for i in x.split(',') %}
        {% for j in i.split(':') %}
            {% set server = server + j[0] %}
            {% set port = port + j[1] %}
        {% endfor %}
    {% endfor %}

但是,在模板中这样做是个非常糟糕的主意。最好将它作为字典传递给模板,然后像这样使用它

代码语言:javascript
运行
复制
{% for k,v in x.iteritems() %}
#use k as server and v as port
票数 1
EN

Stack Overflow用户

发布于 2017-04-23 13:29:01

使用列表理解和join功能来实现这一点。

代码语言:javascript
运行
复制
>>> a ="server1:port1,server2:port2,server3:port3"
>>> temp = [i.split(':') for i in a.split(',')]
>>> temp
[['server1', 'port1'], ['server2', 'port2'], ['server3', 'port3']]

>>> servers = [i[0] for i in temp]
>>> ports = [i[1] for i in temp]
>>> servers
['server1', 'server2', 'server3']
>>> ports
['port1', 'port2', 'port3']
>> ','.join(ports)
port1,port2,port3    
票数 1
EN

Stack Overflow用户

发布于 2017-04-23 13:58:15

实现所需输出的另一种方法:

代码语言:javascript
运行
复制
def denormalize_addr_str(addr_str):
    return reduce(lambda denorm_list, addr: denorm_list + addr.split(':'), addr_str.split(','), [])

addr_str = "server1:port1,server2:port2,server3:port3"

denorm_addr_str = denormalize_addr_str(addr_str)
servers = denorm_addr_str[::2]
ports = denorm_addr_str[::-2]
port_string = ','.join(ports)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43571748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档