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'
组成时,插值几乎没有什么用处