我是 Ruby 的新手,我有以下代码:
out_file = File.open('new1.csv', 'w')
File.open("new7.txt").each do |line|
if line =~ /Revision/ then
out_file.puts line
elsif
line =~ /Author/ then
out_file.puts line
elsif
line =~ /Date/ then
out_file.puts line
end
end
我需要:
- 在输出的 CSV 文件中 A 列中包含“Revision”的行
- “作者”行放在B列
- C 列中包含“日期”的行
- 等等
谁能告诉我如何按照描述将数据放入列中?
现在所有的行都放在一行中。
“new7.txt”样本
Revision: 37407
Author: imakarov
Date: 21 June 2013 г. 10:23:28
Message:
update specification from Jhon (it was in VTBSOATST-1219)
----
Added : /Analitics/Документы/ЧТЗ/BR-5610/2 Спецификации/BR-5610 Публикация клиентских данных в АБС Бисквит (CifOraSyncOffPers).docx
Deleted : /Analitics/Документы/ЧТЗ/BR-5610/2 Спецификации/BR-5610 Публикация клиентских данных в АБС Бисквит.docx
Revision: 37406
Author: imakarov
Date: 21 June 2013 г. 10:22:16
Message:
delete files
----
Deleted : /Analitics/Документы/ЧТЗ/BR-5610/2 Спецификации/ЧТЗ Принудительное обновление и публикация ФЛ с замечаниями Кочебина С..docx
Deleted : /Analitics/Документы/ЧТЗ/BR-5610/2 Спецификации/ЧТЗ Принудительное обновление и публикация ФЛ-comments.docx
Deleted : /Analitics/Документы/ЧТЗ/BR-5610/2 Спецификации/ЧТЗ Принудительное обновление и публикация ФЛ-comments_Орлов.docx
Deleted : /Analitics/Документы/ЧТЗ/BR-5610/2 Спецификации/ЧТЗ Принудительное обновление и публикация ФЛ.docx
Revision: 37405
Author: dboytsov
Date: 21 June 2013 г. 10:21:17
Message:
add attributes in file
----
Modified : /Analitics/Документы/ЧТЗ/BR-5864 Запрос данных клиента по интернет-анкете КН/Преобразование BR-5864.docx
Modified : /Analitics/Документы/ЧТЗ/BR-5864 Запрос данных клиента по интернет-анкете КН/ЧТЗ BR-5864 Запрос данных клиента по интернет анкете.docx
用 .xls 导出可能是更好的方法? 在.xls文件里面每一列导出是不是很麻烦?
现在我有以下情况:
但我需要:
最佳答案
使用csv
库。假设 new7.txt
的列顺序为 Author、Revision、Date,您可以执行以下操作:
require 'csv'
# parse the csv file into an array
CSV.parse("new7.txt", {:headers => false}).each do |line|
# assign each 'cell' to a variable
auther = line[0]
revision = line[1]
date = line[2]
# append the newly order data onto a new csv file
CSV.open("new7_revised.txt", "a") do |csv|
csv << [revision, author, date]
end
end
关于Ruby:不同列中的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17245628/