代码如下:
self.class_logg('http://example.com/api/?\
option=ajax&nologin=1&a=vmware_migrate_2&\
original_server_ip=%s&target_server_ip=%s&\
vmware_name=%s' % (self.ip, dest_node.ip, machine.name))
因为这个字符串太长了,所以我必须把它拆分成几行,但遗憾的是在日志中发现它的打印方式如下:
http://example.com/api/?option=ajax &nologin=1&a=vmware_migrate_2 &original_server_ip=192.168.0.224$
显然它会在那里打印缩进空间。如何解决这个问题? 例如,self.class_logg就在那里,在我的情况下,即使是打印也会出现问题。
答案 0 :(得分:2)
您可以删除\
self.class_logg(('http://example.com/api/?'
'option=ajax&nologin=1&a=vmware_migrate_2&'
'original_server_ip=%s&target_server_ip=%s&'
'vmware_name=%s' % (self.ip, dest_node.ip, machine.name)))
在Python中,当字符串在代码中彼此相邻时,它将组合它们。它被称为“字符串分组”
然而,在我看来,你会用字典做得更好:
fields = {'option': 'ajax',
'nologin': '1',
'a': 'vmware_migrate_2',
'original_server_ip': self.ip,
'target_server_ip': dest_node.ip,
'vmware_name': machine.name}
params = '&'.join(['{}={}'.format(k, v) for k, v in fields.items()])
self.class_logg('http://example.com/api/?{}'.format(params))
如果订单很重要(不应该这样)您可以使用OrderedDict或元组列表。
答案 1 :(得分:1)
您应该使用分组而不是连接或任何其他线路制动:
self.class_logg('http://example.com/api/?'
'option=ajax&nologin=1&a=vmware_migrate_2&'
'original_server_ip=%s&target_server_ip=%s&'
'vmware_name=%s' % (self.ip, dest_node.ip, machine.name))
个人推荐:您应该使用 format
而不是 %
:
self.class_logg(('http://example.com/api/?'
'option=ajax&nologin=1&a=vmware_migrate_2&'
'original_server_ip={}&target_server_ip={}&'
'vmware_name={}').format(self.ip, dest_node.ip, machine.name))
答案 2 :(得分:1)
您可以利用Python处理相邻字符串常量的方法:
self.class_logg('http://example.com/api/?'
'option=ajax&nologin=1&a=vmware_migrate_2&'
'original_server_ip=%s&target_server_ip=%s&'
'vmware_name=%s' % (self.ip, dest_node.ip, machine.name))
当Python看到两个字符串常量紧邻时,它会自动将它们连接在一起以使单个字符串保持不变。这包括跨行,只要Python认识到下一行是前一行的延续(在这种情况下,它将在一对括号内)。
您可以通过一个简单示例看到这一点:
>>> print ('abc'
'def'
'ghi')
abcdefghi
答案 3 :(得分:0)
这里有一个带有表格的巨大字符串。分成四个不同的字符串,如下所示:
self.class_logg('http://example.com/api/?'\
'option=ajax&nologin=1&a=vmware_migrate_2&'\
'original_server_ip=%s&target_server_ip=%s&'\
'vmware_name=%s' % (self.ip, dest_node.ip, machine.name))
重要的是每个字符串开头的单引号。