【发布时间】:2017-06-17 21:34:05
【问题描述】:
我正在从.csv 读取数据。其中一列表示事件发生的周数,格式为:
1,2,5,6,7,8,10
或1-2,5-8,10,
或者有时甚至以一种奇怪的混合方式,比如1-2,5,6,7,8,10。
最小周数是单个 int 值(如 '1'),最大值永远不会大于两位数 int(如 '24'),因为一年有 52 周。
第二个障碍是',' 有资格作为数组元素。所以我必须先用(',')将逗号中的字符串清除并转换为数组,然后再处理主要问题。
问题:
有没有人有一个优雅的解决方案如何区分索引处的元素是范围还是单周,如果元素是数组,则将其替换为与范围一样多的元素,例如:
[1,3-5,7] 应该变成[1,3,4,5,7]
我尝试了什么:
我现在能想到的最好的方法是简单地计算索引处元素的长度,如果它大于2,我认为元素是一个范围,然后将其拆分为'-'。然后将每个元素(如果不是数组)复制到一个新数组或在for loop 中附加一个范围元素的新数组。
【问题讨论】:
标签: python arrays algorithm csv