【发布时间】:2017-04-16 16:57:30
【问题描述】:
这是我的代码:
require 'CSV'
contents = CSV.read('/Users/namename/Desktop/test.csv')
arr = []
first_row = contents[0]
contents.shift
contents.each do |row|
if row[12].to_s =~ /PO Box/i or row[12].to_s =~ /^[[:digit:]]/
#File.open('out.csv','a').puts('"'+row.join('","')+'"')
arr << row
else
row[12], row[13] = row[13], row[12]
#File.open('out.csv','a').puts('"'+row.join('","')+'"')
arr << row
end
end
arr.unshift(first_row)
arr.each do |row|
File.open('out.csv', 'a').puts('"' + row.join('","') + '"')
end
首先我 .shift 以便我的标题字段不会捕获第一个 .each 循环的第一个条件中的模式(并最终交换)。然后我有条件地交换与模式匹配的单元格值,然后将正确移位的值存储在数组中。在此之后,我.unshift 尝试放回我存储在first_row 中的标题字段,但是当我查看生成的out.csv 文件时,我的所有标题都在中间。为什么?
示例数据:
https://gist.github.com/anonymous/e1017d3ba81634d9e1227e7fe49536cb
【问题讨论】:
-
请编辑您的帖子以包含您正在使用的数据的示例。
-
@Jordan,请参阅编辑。