小编Ste*_*ton的帖子

CSV.foreach 不读取 CSV 文件中的第一列

第一次学习 Ruby 自动清理一些 CSV 文件。

我已经设法将下面的脚本从其他 SO 问题拼凑起来,但由于某种原因,脚本没有读取原始 CSV 文件的第一列。如果我添加一个虚拟的第一列,一切正常。我错过了什么?

require 'csv'

COLUMNS = ['SFID','Date','Num','Transaction Type']

CSV.open("invoicesfixed.csv", "wb",
  :write_headers=> true,
  :headers => ["Account__c","Invoice_Date__c","Invoice_Number__c","Transaction_Type__c"]) do |csv|

  CSV.foreach('invoices.csv', :headers=>true, :converters => :all) do |row|


    #convert date format to be compatible with Salesforce
    row['Date'] = Date.strptime(row['Date'], '%m/%d/%y').strftime('%Y-%m-%d')
    csv << COLUMNS.map { |col| row[col] }

  end
end
Run Code Online (Sandbox Code Playgroud)

这个输入文件:

Transaction Type,Date,Num,SFID
Invoice,7/1/19,151466,SFID1
Invoice,7/1/19,151466,SFID2
Invoice,7/1/19,151466,SFID3
Invoice,7/1/19,151466,SFID4
Invoice,7/1/19,151466,SFID5
Invoice,7/1/19,151466,SFID6
Invoice,7/1/19,151153,SFID7
Sales Receipt,7/1/19,149487,SFID8
Sales Receipt,7/1/19,149487,SFID9
Sales Receipt,7/1/19,149758,SFID10
Sales Receipt,7/1/19,149758,SFID11
Run Code Online (Sandbox Code Playgroud)

产生这个输出:

Account__c,Invoice_Date__c,Invoice_Number__c,Transaction_Type__c
SFID1,2019-07-01,151466,
SFID2,2019-07-01,151466,
SFID3,2019-07-01,151466,
SFID4,2019-07-01,151466,
SFID5,2019-07-01,151466,
SFID6,2019-07-01,151466,
SFID7,2019-07-01,151153, …
Run Code Online (Sandbox Code Playgroud)

ruby csv

6
推荐指数
1
解决办法
1173
查看次数

标签 统计

csv ×1

ruby ×1