-1

我是 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)中有“修订”“作者”“日期”等词。在输入文件中,它不是一列。我想解析输入文件并按列复制到.xls

4

1 回答 1

1

根据您的区域设置(只有美国似乎不同)Excel 应使用分号 (";") 作为 CSV 分隔符,而不是逗号 (",")。

来自维基百科

“Microsoft Excel 将打开 .csv 文件,但根据系统的区域设置,它可能需要分号而不是逗号作为分隔符,因为在某些语言中逗号用作小数分隔符。”

您可以使用选项:col_sep来指定列分隔符。这应该有效。

CSV.generate('new1.csv', 'w', {col_sep: ";"}) do |csv|
  data.each do |record|
    csv << record
  end
end
于 2013-06-25T16:47:23.597 回答