Ruby on rails Ruby:如何在xls中解析txt?
我是Ruby的新手,我想解析txt文件(new7.txt) 输入txt文件的示例为:Ruby on rails Ruby:如何在xls中解析txt?,ruby-on-rails,ruby,parsing,csv,xls,Ruby On Rails,Ruby,Parsing,Csv,Xls,我是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 Публика
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”
数据=[]
File.foreach(“new7.txt”)do |行|
line.chomp!
如果行=~/Revision/
data.push[行]
elsif行=~/Author/
如果data.last和not data.last[1]
data.last[1]=行
其他的
data.push[零,行]
结束
elsif行=~/Date/
如果data.last和not data.last[2]
data.last[2]=行
其他的
data.push[零,零,行]
结束
结束
结束
CSV.open('new1.CSV','w')do | CSV|
数据。每个do |记录|
csv根据您的区域设置(似乎只有美国不同),Excel应使用分号(;)作为csv分隔符,而不是逗号(,)
发件人:
Microsoft Excel将打开.csv文件,但根据系统的区域设置,它可能希望使用分号作为分隔符,而不是逗号,因为在某些语言中,逗号用作十进制分隔符
您可以使用选项:col_sep
指定列分隔符。
这应该行得通
CSV.generate('new1.csv', 'w', {col_sep: ";"}) do |csv|
data.each do |record|
csv << record
end
end
CSV.generate('new1.CSV','w',{col_sep:;“})do|CSV|
数据。每个do |记录|
csv我不知道为什么您将所有数据都放在一列中。如果将转换后的数据保存在CSV文件中(如脚本所做),Excel应自动将其解析为三列。如果出现问题,您仍然可以使用数据
->文本到列
菜单将数据拆分为以分隔的列,
@ArieShaw谢谢!!!这是一个真正的帮助我!!!我很惭愧,我以前不知道Excel的这个功能