打印语法不正确

时间:2018-03-13 18:58:49

标签: python

这里的语法有什么问题?

print '#' * 25, 'IMPLEMENTATION FOR %s', '#' * 25 % initialize.ntw_device[index].hostname

以下是输出的一部分:

######################### IMPLEMENTATION FOR %s
 line 11, in shift_off_confirm
        print '#' * 25, 'IMPLEMENTATION FOR %s', '#' * 25 % initialize.ntw_device[index].hostname
    TypeError: not all arguments converted during string formatting

2 个答案:

答案 0 :(得分:0)

实际上问题出在print语句的第二部分。因为当你写作

'IMPLEMENTATION FOR %s', '#' * 25 % "test"

%s需要更换,但你不需要。所以它应该是这样的。

print '#' * 25, 'IMPLEMENTATION FOR %s %s'  % ('#' * 25, initialize.ntw_device[index].hostname)

也许您应该考虑使用format函数而不是% s。

答案 1 :(得分:0)

%运算符是字符串运算符,更类似于C的sprintf而不是printf。它不是print语句的一部分。你写的是类似于

print '#' * 25,
print 'IMPLEMENTATION FOR %s',
print '#' * 25 % initialize.ntw_device[index].hostname

'#' # 25中没有要填充的主机名的格式说明符,从而导致错误。你可以写

print '#' * 25, \
      'IMPLEMENTATION FOR %s' % (initialize.ntw_device[index].hostname,) \
      '#' * 25

print ('#' * 25 + 'IMPLEMENTATION FOR %s' + '#' * 25) % (initialize.ntw_device[index].hostname,)

总是使用显式元组而不是单个值作为右手参数被认为是一种好习惯,以防止RHA评估元组本身的可能性。