在mako模板中拆分变量

时间:2018-04-18 12:27:34

标签: python mako

以下适用于Python命令行

CELLULAR='1.2.3.4'
OCTETS=CELLULAR_IP.split('.')
FOURTH_OCTET=OCTETS[3]
T101_IP='10.1.1.'+FOURTH_OCTET
T102_IP='10.1.2.'+FOURTH_OCTET
T103_IP='10.1.3.'+FOURTH_OCTET
T104_IP='10.1.4.'+FOURTH_OCTET

但是我在Mako模板中遇到了各种各样的麻烦。我想要完成的是在模板中传递一个变量中的IP地址,并获取该IP的最后一个八位字节并使用它来创建其他4个IP。我想我可以把它放在这样一个块中:

<%
OCTETS=CELLULAR_IP.split('.')
FOURTH_OCTET=OCTETS[3]
T101_IP='10.1.1.'+FOURTH_OCTET
T102_IP='10.1.2.'+FOURTH_OCTET
T103_IP='10.1.3.'+FOURTH_OCTET
T104_IP='10.1.4.'+FOURTH_OCTET
%>

但我得到&#34;列表索引超出范围&#34;错误。我认为这也可能导致变量范围的一些问题,我试图解决这个问题。

我也尝试定义一个函数来执行此操作,但我有限的Python能力阻止了我成功。

def get_octets(ip_string):
   try:
       OCTETS=CELLULAR_IP.split('.')
       return FOURTH_OCTET=OCTETS[3]
   except ValueError:
       return 0

关于我应该看到什么来实现这个目标的任何想法?

1 个答案:

答案 0 :(得分:1)

这行得通,但似乎很麻烦。

   def get_octets(ip_string):
        try:
           return (ip_string).split('.')[3]
        except:
           # if ip_string won’t contain at least three . catch any exception and return -1
           return -1