我是Ruby的新手,我想解析txt文件(new7.txt) 输入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
Stackoverflow的同事帮助我编写程序:
require 'csv'
data = []
File.foreach("new7.txt") do |line|
line.chomp!
if line =~ /Revision/
data.push [line]
elsif line =~ /Author/
if data.last and not data.last[1]
data.last[1] = line
else
data.push [nil, line]
end
elsif line =~ /Date/
if data.last and not data.last[2]
data.last[2] = line
else
data.push [nil, nil, line]
end
end
end
CSV.open('new1.csv', 'w') do |csv|
data.each do |record|
csv << record
end
end
但现在我有以下情况:
我需要那个:
我在.csv中使用导出 可能是一个更好的方式导出.xls?在每个列中的.xls文件中导出是否很难? 我在输入文件(new7.txt)中有这样的单词作为“Revision”“Author”“date”等等。在输入文件中,它不是列。我想解析输入文件并按列
复制到.xls答案 0 :(得分:1)
根据您的区域设置(仅美国似乎不同),Excel应使用分号(“;”)作为CSV分隔符而不是昏迷(“,”)。
来自Wikipedia:
“Microsoft Excel将打开.csv文件,但根据系统的区域设置,它可能会使用分号作为分隔符而不是逗号,因为在某些语言中,逗号用作小数分隔符。”
您可以使用选项:col_sep
指定列分隔符。
这应该有效。
CSV.generate('new1.csv', 'w', {col_sep: ";"}) do |csv|
data.each do |record|
csv << record
end
end