Python 只有最后两个字符串为空时为什么会出现异常?

Python 只有最后两个字符串为空时为什么会出现异常?,python,string-formatting,Python,String Formatting,有人能解释一下下面的行为吗 In [23]: l = ['', 'Camino Cielo', '', ''] In [24]: ll = ['', 'Maricopa', 'Highway', ''] In [26]: ' '.join(e for e in l if e) Out[26]: 'Camino Cielo' In [27]: ' '.join(e for e in ll if e) Out[27]: 'Maricopa Highway' In [29]: glue = '

有人能解释一下下面的行为吗

In [23]: l = ['', 'Camino Cielo', '', '']
In [24]: ll = ['', 'Maricopa', 'Highway', '']

In [26]: ' '.join(e for e in l if e)
Out[26]: 'Camino Cielo'

In [27]: ' '.join(e for e in ll if e)
Out[27]: 'Maricopa Highway'

In [29]: glue = ' '
In [30]: '%s'.join(e for e in ll if e) % glue
Out[30]: 'Maricopa Highway'

In [31]: '%s'.join(e for e in l if e) % glue
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
31-7ea8ccb65d69> in <module>()
----> 1 '%s'.join(e for e in l if e) % glue

TypeError: not all arguments converted during string formatting
[23]中的
:l=['''Camino Cielo','''''
在[24]中:ll=[“”,'Maricopa','Highway',“”]
在[26]中:''.join(e代表e,如果e代表e)
Out[26]:“Camino Cielo”
在[27]中:''.join(e代表e,如果e代表e)
[27]:“马里科帕公路”
在[29]中:胶水=“”
在[30]中:'%s'。在ll中加入(e代表e,如果e)%glue
[30]:“马里科帕公路”
在[31]中:'%s'。在l中加入(e表示e,如果e表示e)%glue
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
31-7ea8ccb65d69>英寸()
---->1“%s”。在l中加入(e表示e,如果e表示e)%glue
TypeError:在字符串格式化过程中并非所有参数都已转换

%
运算符应用于
str.join()调用的结果。
调用:

>>> '%s'.join(e for e in ll if e)
'Maricopa%sHighway'
>>> '%s'.join(e for e in ll if e) % glue
'Maricopa Highway'
>>> '%s'.join(e for e in l if e)
'Camino Cielo'
请注意,最后一个结果中没有
%s
;如果e生成器表达式中的e,则在
e的输出中只有一个字符串,其余字符串均为空,且不通过
如果e
过滤器

如果没有占位符,则不能插入
粘合

>>> 'Camino Cielo' % glue
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting

当所有模板都由is
'%s'

组成时,
%
运算符应用于
str.join()调用的结果时,插值几乎没有用:

>>> '%s'.join(e for e in ll if e)
'Maricopa%sHighway'
>>> '%s'.join(e for e in ll if e) % glue
'Maricopa Highway'
>>> '%s'.join(e for e in l if e)
'Camino Cielo'
请注意,最后一个结果中没有
%s
;如果e
生成器表达式中的e,则在
e的输出中只有一个字符串,其余字符串均为空,且不通过
如果e
过滤器

如果没有占位符,则不能插入
粘合

>>> 'Camino Cielo' % glue
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
当所有模板都由
'%s'
组成时,插值几乎没有什么用处