【问题标题】:Convert empty string to zero将空字符串转换为零
【发布时间】:2014-10-12 20:00:54
【问题描述】:

我正在做这样的事情来总结从头到尾的所有值。

big_list = line.split(delim)
sum( [int(float(item)) for item in big_list[start:end]] )

有时big_list 的元素可能为空,在这种情况下转换失败。我可以让它以一种优雅的方式与空字符串一起工作,而无需在上面进行太多更改吗?

【问题讨论】:

  • 您是否要将值从 float 截断为 int?

标签: python string casting io


【解决方案1】:

假设空元素应该为零:

sum(int(float(item)) for item in big_list[start:end] if item)
                                                   # ^ skip over ""

注意:

  1. sum 可以将生成器表达式作为参数,无需构建列表;和
  2. 一个空字符串"" 计算False-y,所以这相当于if item != ""

【讨论】:

  • 我会选择这个......不过为了完整起见:int(float(item or 0)) 是另一种选择(如果正在构建列表并且需要平均值,可能更有用),但对于简单的@987654327 @ - 过滤更有意义
猜你喜欢
  • 1970-01-01
  • 2012-12-20
  • 2016-05-25
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
相关资源
最近更新 更多