创建一个列表作为值列表

时间:2017-05-11 21:05:04

标签: python list csv indexing

我有一个小问题。我正在尝试创建一个包含两列(ID和坐标)的csv,其中坐标列实际上是一个包含4个坐标的列表。这是我的代码:

North = 42.02
South = 32.40
West = -124.453125
East = -114.0985107421875

difference = (North-South)
divided = 10

splitsize = difference/divided

coordinates = []
ID = []

count = 0

while count < 10:
    coordinates.append([West, South+(splitsize*(count+1)), East, South+(splitsize*(count))])
    ID.append(count+1)
    count += 1

现在我想把两个列表合二为一,所以当我导出它时,我有一个带有两列的CSV。第一个是ID,第二个是坐标。

1,[-124.453125, 33.362, -114.0985107421875, 32.4]
2,[-124.453125, 34.324, -114.0985107421875, 33.362]

我一直这样做,我一直在一行中使用ID和坐标获取所有内容。

修改 只是想澄清我在寻找的东西: end result

EDIT2:解决方案 这就是我最终从Writing Python lists to columns in csv

做的事情
with open('test.csv', 'wb') as f:
   writer = csv.writer(f)
   rows = zip(ID, coordinates)
   for row in rows:
       writer.writerow(row)

3 个答案:

答案 0 :(得分:0)

我不确定这是否适合您的情况,但默认情况下,csv将返回与此类似的内容,因为它是逗号分隔文件。尝试在Excel中打开文档并执行以下操作:

1)选择数据列

2)在Data,Data Tools下,选择Text to Columns

3)在打开的那个框中,选择&#34; Delimeted&#34;单选按钮,然后下一步

4)检查&#34;逗号&#34;盒子和击中完成。

如果您的数据现在分为两列,那么您所看到的只是因为它是一个csv文件。

答案 1 :(得分:0)

  

现在我想将两个列表合二为一,所以当我导出它时,我有一个CSV   有两列。第一个是ID,第二个是坐标。

     

1,[ - 124.453125,33.362,-114.0985107421875,32.4] 2,[ - 124.453125,   34.324,-114.0985107421875,33.362]

方括号不是csv语法的一部分,因此将导入为

"1","[-124.453125", "33.362", "-114.0985107421875", "32.4]"

如果您控制此csv的使用者,最简单的解决方案是只导出五个值并让消费者处理列。 如果你需要一个层次结构,JSON可能是一个更好的选择。

如果您的消费者希望将列表作为第二列并且无法处理JSON(???),那么您希望导出类似

的内容
1,"[-124.453125, 33.362, -114.0985107421875, 32.4] 2,[-124.453125,
34.324, -114.0985107421875, 33.362]"

然后希望消费者执行eval或类似的操作将其转换为列表。请注意,这是一个非常糟糕的主意,因为eval使用用户的权限执行任意代码,因此任何天真的实现(以及最聪明的实现)都将是很好的攻击向量。

答案 2 :(得分:0)

var selectors = [Rails.linkDisableSelector, Rails.formEnableSelector].join(', ');
$(selectors).each(function() {
  Rails.enableElement(this);
})