如何在Ruby中从文本文件创建CSV

我需要从文本文件创建一个CSV文件,其中包含有关我的通话的结算数据。我的文本文件的结构如下:

01.02.2016 10:35:49 8998775 New York 3:35 0,00 0,00

我使用以下方法创建CSV:

require 'csv'
  @calls = File.new("modified_billing", "r")
  CSV.open("new.csv", 'wb', write_headers: true,
    headers: ["Date", "Time", "Phone number","City","Duration", "Cost", "Cost of call"]) do |csv|
    @calls.each do |call|
      csv << call.split(" ")
    end
  end

它适用于名称唯一的城市,但显然不适用于“纽约”,“拉斯维加斯”等,因为它会在其中创建两个列。

达米安·罗奇(Damien Roche)

我想您已经快知道了。这是不使用正则表达式的简单方法:

string = '01.02.2016 10:35:49 8998775 New York 3:35 0,00 0,00'
data = string.split(' ')

data.shift(3)
# => ["01.02.2016", "10:35:49", "8998775"]

data.pop(3)
# => ["3:35", "0,00", "0,00"]

data.join(' ')
# => "New York"

# putting it together
first, third, second = data.shift(3), data.pop(3), [data.join(' ')]
csv << first + second + third

更紧凑的东西,虽然更难阅读:

data = call.split(' ')
csv << [data.shift(3), data.pop(3)].insert(1, data.join(' ')).flatten

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在.csv文件中创建从文本文件中的值派生的单独变量?

如何在Delphi中创建文本文件

从文本文件创建CSV文件

如何在Linux中创建带有特定文本的文本文件?

如何在C中创建创建文本文件序列

如何在Linux下在文本文件中创建以行命名的文件

如何在上次编辑目录中的文件时创建日期的文本文件

VBScript从文本文件创建CSV

如何在csv中获取其条目与文本文件中的条目匹配的元素的索引

如何在 Ruby 中同时读取和覆盖文本文件

如何使用RUBY读取文本文件中的行

如何在vbscript中创建文本文件并将其写入

如何在C#中从给定的文本文件创建2个单独的list <string>

如何在C#中基于日期创建文本文件

如何在R中读取文本文件并创建数据框

如何在Golang中创建固定长度的文本文件?

如何在Mac上的文本文件中创建ssh RSA私钥?

如何在Kotlin中创建文本文件并将其写入?

如何在Lisp中创建和写入文本文件(续)

如何在外部系统中创建文本文件

如何在Cmd的子目录中创建或更改文本文件?

如何从R中的列表创建自动文本文件?

如何从Spark中的文本文件创建DataFrame

如何从Java中的文本文件创建对象

如何从我创建的文本文件中读取结构?

如何在R中读取文本文件?

如何在文本文件中写入数组的内容?

如何在文本文件中执行命令?

如何在Python中从文本文件读取input()