我有一个CSV,看起来是这样的:
user_id,is_user_unsubscribed
131072,1
7077888,1
11010048,1
12386304,1
327936,1
2228480,1
6553856,1
9830656,1
10158336,1
10486016,1
10617088,1
11010304,1
11272448,1
393728,1
7012864,1
8782336,1
11338240,1
11928064,1
4326144,1
8127232,1
11862784,1
但我希望数据看起来像这样:
131072
7077888
11010048
12386304
327936
...
对该怎么办有什么想法吗?我有33万排..。
发布于 2017-09-19 16:20:45
您可以将文件作为数组读取,并忽略第一行,如下所示:
data = CSV.read("dataset.csv")[1 .. -1]
这样,您就可以删除标题。
对于该列,可以删除如下列:
data = CSV.read("dataset.csv")[1 .. -1]
data.delete("is_user_unsubscribed")
data.to_csv # => The new CSV in string format
查看这个以获得更多信息:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html
http://ruby-doc.org/stdlib-2.0.0/libdoc/csv/rdoc/CSV.html
发布于 2017-09-19 16:39:43
我的建议是将文件中的一行读入字符串,然后用逗号拆分得到的字符串(有一个逗号分隔列)。
分裂Ruby字符串:https://code-maven.com/ruby-split
require 'pp'
line_num=0
text=File.open('myfile.csv').read
text.each_line do |line|
textArray = line.split
textIWant = textArray[0]
line_num = line_num + 1
print "#{textIWant}"
end
在这段代码中,我们打开一个文本文件,并逐行读取。通过从第一列(数组中的第零项)中选择文本,将每一行拆分成我们想要的文本,然后打印出来。
如果您不想要标头,当line_num =0时,添加一个If语句来不拾取数据。更好地使用unless
。
只要用新数据重写一个新文件就行了。
发布于 2017-09-19 16:54:02
最后我就这么做了。这个是犹太的吗?
user_ids = []
[]
CSV.foreach("eds_users_sept15.csv", headers:true) do |row|
user_ids << row['user_id']
end
nil
user_ids.count
322101
CSV.open('some_new_file.csv', 'w') do |c|
user_ids.each do |id|
c << [id]
end
end
https://stackoverflow.com/questions/46305279
复制相似问题